home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Information / Programming / Gestalt Selectors 3.4.2 / Gestalt Selectors List 3.4.2 next >
Encoding:
Text File  |  1996-07-01  |  294.2 KB  |  7,208 lines  |  [TEXT/R*ch]

  1. Gestalt Selectors List 3.4.2
  2. ============================
  3.  
  4. Maintained and published by Rene G.A. Ros (rgaros@bio.vu.nl)
  5.  
  6. First published: 12 October 1992, 13:15 CET (GMT+1)
  7. Last version   : 14 May 1996, 07:45 CET (GMT+2, DST)
  8. Previous update: 3 June 1996, 07:30 CET (GMT+2, DST)
  9. Last modified  : 1 July 1996, 22:30 CET (GMT+2, DST)
  10.  
  11. This document lists all selectors, known to the creator, for use with the
  12. Gestalt Manager. They can include selector codes installed by Apple (system)
  13. software or by software from third parties (your software?).
  14. The information in this list is useful for programmers who use the Gestalt
  15. Manager with their software (even using externals, as with HyperCard,
  16. 4th Dimension and so on).
  17. To use this list, you should be familiar with the Gestalt Manager as
  18. described in Inside Macintosh: Operating System Utilities.
  19.  
  20. This file can be best viewed with a mono-spaced font like Monaco. Because
  21. it is wrapped as setext you can use several utilities to index and read it.
  22. For the Macintosh you can use Easy View and on a UNIX system sv (setext
  23. viewer) works fine. Both are available by FTP from sumex-aim.stanford.edu
  24. (or its mirrors!), archived respectively as:
  25.      ftp://sumex-aim.stanford.edu/info-mac/text/easy-view-261.hqx
  26.      ftp://sumex-aim.stanford.edu/info-mac/text/easy-view-262-updt.hqx
  27.      ftp://sumex-aim.stanford.edu/info-mac/text/setext-viewer-05-unix.uu
  28.  
  29. A single question mark indicates an uncertainty regarding the information
  30. in front of the question mark. Three question marks indicate complete
  31. absence of the information.
  32. See the chapters at the end for more information about this list.
  33.  
  34. Contents
  35. --------
  36.     Gestalt Selectors List
  37.       Contents
  38.       Contributions
  39.       Changes Overview
  40.       Wish List
  41.     Apple System Software (A-E)
  42.     Apple System Software (F-K)
  43.     Apple System Software (L-N)
  44.     Apple System Software (O-S)
  45.     Apple System Software (T-Z)
  46.     Apple Additional Software
  47.     Third Parties Software
  48.     Unknown Apple Software
  49.     Unknown Third Parties Software
  50.     Gestalt Manager Calls
  51.       Gestalt Manager Routines
  52.       Gestalt Value Routines
  53.       Undocumented Gestalt Manager Routines
  54.       Custom Routines
  55.     Reports
  56.       Accessing the Gestalt Manager
  57.       AppleShare File & Print Server selector codes
  58.       AppleTalk
  59.       Clock Chipped
  60.       Copland
  61.       Copy protection using Gestalt
  62.       Environs & SysEnvirons
  63.       Executor Mac-emulator
  64.       Gestalt Apple Event
  65.       Gestalt Applications
  66.       GestaltValue
  67.       GestaltValue & CodeWarrior Problem
  68.       Glue code
  69.       INITGestalt standard
  70.       Machine Names
  71.       Macintosh Application Environment
  72.       Macintosh Compatibles
  73.       Modern Memory Manager
  74.       PPC Libraries
  75.       QuickTime
  76.       RAM Doubler
  77.       Relabled Macintosh Models
  78.     General Info
  79.       System Managers
  80.       Gestalt Problems
  81.       History
  82.       Abbreviations
  83.       Sources
  84.     Definitions and Formats
  85.       Use in Language
  86.       Definitions
  87.       Format Selector Entry
  88.       Format Version Numbers
  89.     About this list
  90.       Availability
  91.       Gestalt Submission Form
  92.       Acknowledgements
  93.       Legal Stuff
  94.       Editor's Address
  95.  
  96. Contributions
  97. -------------
  98. This section lists the people who contributed information which is now
  99. included with this version of the list.
  100.  
  101. ===========================================================================
  102. Contributions to the selector sections
  103. ===========================================================================
  104. Person                 Software                Selector(s) added/changed
  105. ---------------------------------------------------------------------------
  106. Anonymous              System                  alis, bclk, cput, pclk
  107.                        System?                 ata , hrad, srad
  108.                        System Update enbl      sysu
  109.                        Video Startup ext       tv  
  110. Jean-Pierre Curcio     Open Transport lib      otmo, otmv, otra, otrv
  111.                        Remote Access Aliases ext
  112.                                                strm
  113.                        System                  bclk, pclk
  114. Jeff Holcomb           QuickTime Conferencing ext?
  115.                                                qtci
  116. Marco Piovanelli       FreePPP cp?             PPPp
  117. Quinn "The Eskimo!"    MacTCP                  mtcp
  118. Rene Ros               d2 FM software          d2FM
  119.                        Hidden Finder Features cp
  120.                                                fndx
  121.                        Serial Enabler cp       SSpe
  122.                        Sibling Rivalry ext     Sibl
  123.                        StuffIt SpaceSaver? ext SLi3, SLip
  124.                        System                  bugx, bugy, mach, pclk
  125.                        System ?                sr/2
  126.                        System 7.5.3 Rev. 2     sysu
  127.                        True Finder Integration? cp?
  128.                                                TFI1, TFI2, TFI3, TFI4
  129.                        WakeUp Items cp         WkUp
  130.                        unknown                 ASB!, ASB$, ASB*, HotK, Zoom
  131. Maurice Volaski, Flux Software
  132.                        SmartKeys cp            SK3F, SKey, SKgc
  133. ---------------------------------------------------------------------------
  134.  
  135. ===========================================================================
  136. Contributions to the non-selector sections
  137. ===========================================================================
  138. Person                 Chapter/Section
  139. ---------------------------------------------------------------------------
  140.  
  141. ---------------------------------------------------------------------------
  142.  
  143. Changes Overview
  144. ----------------
  145. Added selectors
  146.     Apple System  : ata 
  147.     Apple Add.    : -
  148.     Third Parties : SK3F, SKgc
  149. Added unknown
  150.     Apple Softw.  : sr/2
  151.     Third Parties : ASB!, ASB$, ASB*, HotK, PPPp, Sibl, TFI1, TFI2, TFI3,
  152.                     TFI4, WkUp, Zoom
  153. Changed selectors
  154.     Apple System  : alis, bclk, mach, pclk, tv  , sysu
  155.     Apple Add.    : mtlk, qtci
  156.     Third Parties : SKey
  157. Changed unknown
  158.     Apple Softw.  : bugx, bugy, fndx
  159.     Third Parties : -
  160. Previously unknown
  161.     Apple System  : bclk, hrad, pclk, srad, sysu
  162.     Apple Add.    : -
  163.     Third Parties : -
  164. Includes updates 3.4.1 up to and including 3.4.2, sent to subscribers of
  165. the mailing list.
  166.  
  167. The gestaltMachineType ('mach') entry is restructured.
  168.  
  169. Wish list
  170. ---------
  171. The table below lists the topics on which more information is needed
  172. regarding the Gestalt selectors which provide information about these
  173. topics.
  174.  
  175. ===========================================================================
  176. WANTED
  177. ===========================================================================
  178. Information wanted about:
  179. ---------------------------------------------------------------------------
  180. Copland:
  181.   Feature Manager
  182.   Notification Manager: notifier support
  183.   Tip Manager
  184.   Trigger Manager
  185.   Scheduled Task Manager
  186. FireWire
  187. Game Sprockets API
  188. Gestalt Manager    its future
  189. multi-processing   'kbd ' already obsolete, 'proc' also? :-)
  190. Pippin
  191. PPCP               full: PowerPC Platform; formerly CHRP
  192. QuickTime VR       nothing? now as library, later as extension?
  193. RAID               compatible drivers installed?
  194. SD-ROM             Super CD-ROM (10x capacity CD-ROM) driver software?
  195. Universal Serial Bus (USB)
  196.  
  197. machine IDs        for the latest or upcoming Macs
  198.  
  199. and more info for the General Info/System Managers section
  200. ---------------------------------------------------------------------------
  201.  
  202. Apple System Software (A-E)
  203. ===========================
  204. This chapter lists selector codes of which the meaning is documented and
  205. the first character of the selector code is in the A-E range.
  206.  
  207. a/ux (A/UX [2.0?])
  208.      (System [6.0.4])
  209.      gestaltAUXVersion
  210.      Returns the version of A/UX, if it is executing, as BCD?
  211.  
  212.      #define gestaltAUXVersion 'a/ux' /* A/UX version, if present */
  213.  
  214.      NOTES:
  215.      If Gestalt doesn't know the answer, test bit 9 of the HWCFgFlag
  216.      system global (0x0B22; word). If set, assume you have A/UX 1.0.
  217.  
  218.      This selector also indicates if you're running under MAE on an
  219.      UNIX machine. &AD08
  220.  
  221.      This selector may be installed but returns gestaltUnknownErr instead
  222.      of zero when A/UX is not installed. (Rene Ros)
  223.  
  224. addr (System [6.0.4])
  225.      gestaltAddressingModeAttr
  226.      Returns information about the current addressing mode.
  227.  
  228.      enum {
  229.      #define gestaltAddressingModeAttr 'addr' /* addressing mode attr. */
  230.      gestalt32BitAddressing = 0,  /* started up with 32-bit addr. */
  231.      gestalt32BitSysZone    = 1,  /* system heap has 32-bit clean */
  232.                                   /*  block headers */
  233.      gestalt32BitCapable    = 2}; /* machine is 32-bit capable */
  234.  
  235. afps (AppleShare ext [3.5?], part of System 7.5) &AD18
  236.      gestaltAppleShareClient?
  237.      Returns the version of the AppleShare client software as Integer in
  238.      the high-word of the response? The low-word of the response returns
  239.      information on the AppleShare client software? (Rene Ros)
  240.  
  241.      enum {
  242.      #define gestaltAppleShareClient? 'afps'
  243.      gestaltAppleShareVersionMask? = 0xFFFF0000, /* Version is in upper */
  244.                                                  /*  2 bytes of result */
  245.      gestaltAppleShare???Mask?     = 0x0001};    /* If set ??? */
  246.      gestaltAppleShare???Mask?     = 0x0002};    /* If set ??? */
  247.  
  248.      NOTE:
  249.      No details were given in the source: "...information about the
  250.      characteristics of the workstation and the current version..."
  251.      Seen bits 0 and 16 set (0x00010001) and version 3.6.2 returns
  252.      0xC0010004 on at least two machines. (Rene Ros)
  253.  
  254. ag_v (Apple Guide ext [1.2.7])
  255.      gestaltAppleGuideVersion?
  256.      Returns the version number of Apple Guide as BCD.
  257.  
  258.      #define gestaltAppleGuideVersion? 'ag_v'
  259.  
  260. alis (System [7.0])
  261.      (Remote Access Aliases ext [1.0?], part of Apple Remote Access)
  262.      gestaltAliasMgrAttr
  263.      Returns information about the Alias Manager.
  264.  
  265.      enum {
  266.      #define gestaltAliasMgrAttr 'alis' /* Alias Mgr attributes */
  267.      gestaltAliasMgrPresent                 = 0,
  268.      gestaltAliasMgrSupportsRemoteAppletalk = 1,  /* supports Remote */
  269.                                                   /*  Appletalk &AD02 */
  270.      gestaltAliasMgrSupportsAOCEKeychain    = 2}; /* True if the Alias */
  271.                                                   /*  Mgr knows about */
  272.                                                   /*  the AOCE Keychain */
  273.                                                   /*  &AS22 */
  274.  
  275.      NOTE: See 'Reports' chapter (QuickTime section) for more information.
  276.  
  277. ascr (AppleScript ext [1.0]) 
  278.      gestaltAppleScriptAttr &AS08
  279.      Returns information about AppleScript.
  280.  
  281.      enum {
  282.      #define gestaltAppleScriptAttr 'ascr' /* AppleScript attributes */
  283.      gestaltAppleScriptPresent        = 0,
  284.      gestaltAppleScriptPowerPCSupport = 1};
  285.  
  286. ascv (AppleScript ext [1.0])
  287.      gestaltAppleScriptVersion &AS08
  288.      Returns the version of AppleScript as NumVersion?
  289.  
  290.      #define gestaltAppleScriptVersion 'ascv' /* AppleScript version */
  291.  
  292.      NOTE:
  293.      AppleScript 1.1 returns 0x01100110 which doesn't look like a proper
  294.      version number (version 1.0 returned 0x01008000). (Rene Ros)
  295.      This is actually just a bug in the way AppleScript provides the
  296.      version. Some day it will be fixed. (Jon Pugh)
  297.  
  298. aslm (Shared Library Manager ext [1.1.1?])
  299.      (System [7.5.3])
  300.      gestaltASLM68K &AS17
  301.      Returns the version of the Shared Library Manager as BCD in the upper
  302.      2 bytes and attribute bits in the lower 2 bits. NULL is returned when
  303.      ASLM did not load properly at boot time and is not available.
  304.  
  305.      enum {
  306.      #define gestaltASLM68K 'aslm' /* ASLM selector for 68K Macs */
  307.      #define gestaltASLMPPC 'slmp' /* ASLM selector for PPC Macs */
  308.      #define gestaltASLM 'aslm'    /* or 'slmp', see below */
  309.      gestaltASLMVersionMask = 0xFFFF0000, /* Version is in upper 2 bytes */
  310.                                           /*  of result */
  311.      gestaltASLMPresentMask = 0x0001,     /* If set ASLM is or was */
  312.                                           /*  loaded. */
  313.      gestaltASLMLoadedMask  = 0x0002};    /* If set ASLM is currently */
  314.                                           /*  loaded. */
  315.  
  316.      #if GENERATINGPOWERPC
  317.          define gestaltASLM gestaltASLMPPC
  318.      #else
  319.          define gestaltASLM gestaltASLM68K
  320.      #endif
  321.  
  322.      NOTES:
  323.      Earlier (beta?) versions of the ASLM PowerPC used 'ASLM' as the
  324.      selector instead of 'slmp'.
  325.  
  326.      Early releases of Shared Library Manager installed an INIT into the 
  327.      system file which registered this selector with an invalid function 
  328.      pointer in the case that the Shared Library Manager extension did not 
  329.      exist. Calling Gestalt with this selector would then cause a bus error.
  330.      (Paul Cunningham, Teknosys, Inc.)
  331.  
  332.      Shared Library Manager 2.0 (beta) on a Power Macintosh 6100/60
  333.      installs both 'aslm' and 'slmp' selectors. (Rene Ros)
  334.  
  335. ASLM (Shared Library Manager ext [1.1.1?])
  336.      (System? [7.5?])
  337.      gestaltASLMPPC (old!) &AS17
  338.  
  339.      NOTE:
  340.      See the gestaltASLM68K ('aslm') entry for more information.
  341.  
  342. ata  (System? [???])
  343.      gestaltATAAttr &AS22
  344.      Returns information about the ATA Manager. ATA is the driver to 
  345.      support IDE hard disks.
  346.  
  347.      enum {
  348.      #define gestaltATAAttr 'ata '
  349.      gestaltATAPresent = 0}; /* if set, ATA Manager is present */
  350.  
  351.      NOTE:
  352.      What to test for on machines with IDE drives but without this selector
  353.      installed?
  354.  
  355. atkv (System [7.0, AppleTalk 56])
  356.      gestaltATalkVersion &AT02
  357.      Returns AppleTalk version as NumVersion. If selector is not present
  358.      then AppleTalk is not present (not loaded at startup). &AD18
  359.  
  360.      This is different from 'atlk' !
  361.  
  362.      #define gestaltATalkVersion 'atkv' /* AppleTalk version &AD01/M01 */
  363.  
  364.      WARNING:
  365.      This selector returns the majorRev field of the NumVersion record as
  366.      hexadecimal instead of the usual BCD.
  367.  
  368.      NOTE: See 'Reports' chapter (AppleTalk section) for more information.
  369.  
  370. atlk (System [6.0.4])
  371.      gestaltAppleTalkVersion
  372.      Returns the version of the .MPP driver as INTEGER. And returns zero
  373.      when AppleTalk is off. &AD18
  374.  
  375.      #define gestaltAppleTalkVersion 'atlk' /* AppleTalk version */
  376.  
  377. aucd (Audio CD Access ext [4.0], part of Apple CD-ROM Software) &AT03
  378.      gestaltAudioCDAccessVersion?
  379.      Returns Audio CD Access version as BCD.
  380.  
  381.      #define gestaltAudioCDAccessVersion? 'aucd' /* Audio CD Access */
  382.                                                  /*  version */
  383.  
  384.      NOTE: The returned version is obtained from 'vers' resource ID# 1.
  385.  
  386. bclk (System [7.5.2?) INF?
  387.      gestaltBusClkSpeed &AS22
  388.      Returns the main I/O bus clock speed in Hz.
  389.  
  390.      #define gestaltBusClkSpeed 'bclk'
  391.  
  392.      NOTES:
  393.      Only on Power Macintosh, not on 68K computers?
  394.  
  395.      Some 604-based Power Computing models return the wrong value.
  396.  
  397.      See also 'pclk' in this chapter.
  398.  
  399. BSDa (CloseView cp [???], by Berkeley Systems, Inc.)
  400.      gestaltCloseViewAttr
  401.      Returns information about the CloseView Control Panel.
  402.  
  403.      enum {
  404.      #define gestaltCloseViewAttr 'BSDa'      /* CloseView attributes */
  405.      gestaltCloseViewEnabled            = 0,
  406.      gestaltCloseViewDisplayMgrFriendly = 1}; /* Closeview compatible */
  407.                                               /*  with Display Manager */
  408.                                               /*  (System 7.5.2?) &AS05 */
  409.  
  410. cash (System [???]) &S03
  411.      gestaltRAMCacheSize
  412.      Returns byte-size of physical RAM allocated to Disk Cache.
  413.      0 = Disk Cache Off
  414.  
  415.      #define gestaltRAMCacheSize 'cash' /* RAM cache size */
  416.  
  417.      NOTE:
  418.      This selector is listed in THINK Reference 1.0 but it is unknown which
  419.      System Software version should install it.
  420.  
  421. cfrg (System [7.1.2? on PowerMac])
  422.      (CFM68K ext [1.0a1], part of OpenDoc)
  423.      gestaltCFMAttr
  424.      Returns information about the Code Fragment Manager.
  425.  
  426.      enum {
  427.      #define gestaltCFMAttr 'cfrg' /* Code Fragment Mgr attributes */
  428.      gestaltCFMPresent = 0}; /* Code Fragment Manager is present */
  429.  
  430. cmta (ColorSync ext [1.0.4?]
  431.      gestaltColorMatchingAttr &AD09
  432.      Returns information about the ColorSync Utilities?
  433.  
  434.      enum {
  435.      #define gestaltColorMatchingAttr 'cmta' /* Color Matching Attr. */
  436.      gestaltHighLevelMatching      = 0,  /* BeginMatching & */
  437.                                          /*  DrawMatchedPicture present */
  438.      gestaltColorMatchingLibLoaded = 1}; /* Native PowerPC shared */
  439.                                          /*  library is loaded. a.k.a. */
  440.                                          /*  gestaltSharedLibLoaded? */
  441.  
  442. cmtc (ColorSync ext [1.0?])
  443.      gestaltColorMatchingVersion
  444.      Returns the version of the Color Matching software as BCD.
  445.  
  446.      enum {
  447.      #define gestaltColorMatchingVersion 'cmtc' /* Color Matching */
  448.                                                 /* version */
  449.      gestaltColorSync10  = 0x0100,  /* &AD09 */
  450.      gestaltColorSync11  = 0x0110,  /* &AD09 */
  451.      gestaltColorSync104 = 0x0104,  /* &AD09 */
  452.      gestaltColorSync105 = 0x0105,  /* &AD09 */
  453.      gestaltColorSync20  = 0x0200}; /* &AD17/AD21 */
  454.  
  455.      NOTE:
  456.      ColorSync 1.0 returns gestaltColorSync10 for the version of the
  457.      utilities that work with System 6.0.7. And gestaltColorSync11 is
  458.      returned by the version that works with System 7.0 and later.
  459.      From version 1.0.4 up the correct version is returned. &AD17
  460.  
  461. conn (System [7.0])
  462.      gestaltConnMgrAttr
  463.      Returns information about the Connection Manager.
  464.  
  465.      enum {
  466.      #define gestaltConnMgrAttr 'conn' /* Conn. Mgr attributes */
  467.      gestaltConnMgrPresent      = 0,  /* Connection Mgr is present */
  468.      gestaltConnMgrCMSearchFix  = 1,  /* fix for CMAddSearch present */
  469.      gestaltConnMgrErrorString  = 2,  /* has CMGetErrorString &AS02 */
  470.      gestaltConnMgrMultiAsyncIO = 3}; /* CMNewsIOPB,CMDisposeIOPB, */
  471.                                       /*  CMPBRead,CMPBWrite,CMPBIOKill */
  472.                                       /*  &AS02 */
  473.  
  474.      NOTE:
  475.      Not installed by Communications Toolbox for System 6.
  476.  
  477. cpkr (Color Picker ext [2.0?])
  478.      gestaltColorPicker
  479.      gestaltColorPickerVersion
  480.      Returns Color Picker version as BCD.
  481.  
  482.      /* ColorPicker Mgr version */
  483.      #define gestaltColorPicker 'cpkr'
  484.      #define gestaltColorPickerVersion 'cpkr'
  485.  
  486.      NOTE:
  487.      Version 2.0a4 returns as response 0x0001, but version 2.0a5 and
  488.      later (including 2.0f) return 0x0100. (Rene Ros)
  489.  
  490. cpnt (System [7.1])
  491.      (Color Picker Extension ext [2.0])
  492.      (Color Sync ext [1.0.4?])
  493.      (Macintosh Easy Open cp [1.0?])
  494.      (QuickTime ext [1.0])
  495.      (Speech Manager ext [1.1.1, not 1.2?])
  496.      gestaltComponentMgr
  497.      Returns Component Manager version as INTEGER.
  498.  
  499.      #define gestaltComponentMgr 'cpnt' /* Component Mgr version &AS01 */
  500.  
  501. cput (System [7.1.2?]) &AS04/AS05
  502.      gestaltNativeCPUtype
  503.      Returns a value that indicates the type of native processor that is
  504.      currently running.
  505.  
  506.      enum {
  507.      #define gestaltNativeCPUtype 'cput' /* Native CPU type */
  508.      /* Motorola Architecture */
  509.      gestaltCPU68000 = 1,
  510.      gestaltCPU68010 = 2,
  511.      gestaltCPU68020 = 3,
  512.      gestaltCPU68030 = 4,
  513.      gestaltCPU68040 = 5,
  514.      /* PowerPC Architecture */
  515.      gestaltCPU601   = 0x101,
  516.      gestaltCPU603   = 0x103,
  517.      gestaltCPU604   = 0x104,  /* same for 604e ? */
  518.      gestaltCPU603e  = 0x106,  /* &AS22 */
  519.      
  520.      /* PowerPC Architecture (Unreleased & Rumoured) */
  521.      gestaltCPU604e? = ???,
  522.      gestaltCPU613?  = ???,
  523.      gestaltCPU614?  = ???,
  524.      gestaltCPU615?  = ???,
  525.      gestaltCPU620?  = ???,
  526.      gestaltCPU630?  = ???};
  527.  
  528.      NOTE:
  529.      The 'cput' selector is available on all Macs running System 7.5 or
  530.      later and sometimes with System 7.1. If not available, use 'proc'
  531.      selector. &AS22
  532.  
  533.      According to Universal Interfaces 3.0d3 Gestalt.h header file the
  534.      Quadra 660AV and Quadra840AV always return 5 because of a ROM bug. But
  535.      since they have a M68040, 5 is the correct value? Or after an PPC
  536.      upgrade these two machines still return 5?
  537.      System 7.5 fixes this problem. &AS22
  538.  
  539.      The GestaltEqu.h file published with E.T.O. #12 was replaced by the
  540.      one on E.T.O. #13. However there was made a mistake, it lists the 68K
  541.      values in the range 0-4 while it should be 1-5 as listed above.
  542.      This problem is acknowledged by Apple.
  543.      You can fix this problem by using the declarations listed above or by
  544.      using the GestaltEqu.h file from E.T.O. #13 but then test first the
  545.      gestaltSysArchitecture ('sysa') selector and when it reports a 68K
  546.      machine use gestaltProcessorType.
  547.      However, System 7.5 and later were apperantly created using the
  548.      incorrect header file and return the incorrect values.
  549.      Example: 'cput' returns 3 and 'proc' returns 4.
  550.      (Anonymous, Dave Radcliffe, Roland Mansson, Rene Ros)
  551.  
  552.      To check whether the native system architecture is a MC680x0 or a
  553.      PowerPC use the gestaltSysArchitecture ('sysa') selector. See for
  554.      more information on the 68K processors the gestaltProcessorType
  555.      ('proc') selector.
  556.  
  557. crm  (System [7.0])
  558.      gestaltCRMAttr
  559.      Returns information about the Communications Resource Manager.
  560.  
  561.      enum {
  562.      #define gestaltCRMAttr 'crm ' /* Comm. Resource Mgr attributes */
  563.      gestaltCRMPresent       = 0,  /* Comm. Resource Mgr present */
  564.      gestaltCRMPersistentFix = 1,  /* fix for persistent tools &AS02 */
  565.      gestaltCRMToolRsrcCalls = 2}; /* has CRMGetToolResource/ */
  566.                                    /*  ReleaseToolResource &AS02 */
  567.  
  568.      NOTE:
  569.      Not installed by Communications Toolbox for System 6.
  570.  
  571. csvr (Control Strip cp [1.0])
  572.      gestaltControlStripVersion
  573.      Returns the version of Control Strip software that is installed as
  574.      NumVersion.
  575.  
  576.      #define gestaltControlStripVersion 'csvr'
  577.  
  578.      WARNING:
  579.      Control Strip 1.0 used to install the 'sdvr' selector (which is used
  580.      by PowerTalk) instead of this selector to return the version. This is
  581.      corrected when the gestaltControlStripAttr ('sdev') selector has bit
  582.      gestaltControlStripVersionFixed set (Control Strip 1.1 and later).
  583.      &AS11/AT08 (Rene Ros)
  584.  
  585. ctbm (System [???])
  586.      gestaltCTBManagersAttr &S02
  587.      Returns information about the Communications Toolbox Managers, it is a
  588.      bitmask of which managers are present.
  589.  
  590.      #define gestaltCTBManagersAttr 'ctbm' /* Comm. Mgrs attributes */
  591.  
  592.      NOTE:
  593.      Never installed by any known system version. Never planned for any
  594.      previous or future system version. (Alex Rosenberg)
  595.  
  596. ctbu (System [7.0])
  597.      gestaltCTBUtilsAttr &S02
  598.      Returns information about the Communications Toolbox Utilities.
  599.  
  600.      enum {
  601.      #define gestaltCTBUtilsAttr 'ctbu' /* Comm. TB Utils attr. */
  602.      gestaltCTBUtilsPresent = 0};
  603.  
  604.      NOTE:
  605.      Not installed by Communications Toolbox for System 6 and not observed
  606.      with any other system software version.
  607.  
  608. ctbv (System [7.0])
  609.      gestaltCTBVersion
  610.      Returns the version number of the Communications Toolbox as BCD.
  611.  
  612.      #define gestaltCTBVersion 'ctbv' /* Comm. Toolbox version */
  613.  
  614.      NOTE:
  615.      Not installed by Communications Toolbox for System 6.
  616.  
  617.      With the Power Macintosh the Communication Toolbox returned a Gestalt
  618.      value indicating version 1.1 while the ROM actually had version 1.0.
  619.      This is fixed by the PowerPC Enabler 1.0.1. and the PowerPC Upgrade
  620.      Card Enabler 1.0.1. because they install CTB 1.1. &AT06
  621.      As of System 7.1, the version of the CTB should track the System
  622.      version. The PowerMac ROMs handled this incorrectly and System 7.5
  623.      rectifies this by reporting 7.5.0. (Alex Rosenberg)
  624.  
  625. danm (System [Copland?])
  626.      gestaltDesktopAnimationMgr &AD21
  627.      Returns information about the Desktop Animation Manager (DAM).
  628.  
  629.      enum {
  630.      #define gestaltDesktopAnimationMgr 'danm'
  631.      gestaltDesktopAnimationMgrPresent = 0}; /* if set, DAM is present */
  632.  
  633.      WARNING:
  634.      From the Preliminary Copland Headers. May change in the future.
  635.  
  636. dbac (System [7.0])
  637.      gestaltDBAccessMgrAttr
  638.      Returns information about the Data Access Manager.
  639.  
  640.      enum {
  641.      #define gestaltDBAccessMgrAttr 'dbac' /* Data Access Mgr attributes */
  642.      gestaltDBAccessMgrPresent = 0}; /* TRUE if Data Access Mgr present */
  643.  
  644. dfnd (PowerTalk ext [1.0?], part of PowerTalk)
  645.      gestaltSDPFindVersion
  646.      Returns the SDP Find version as INTEGER. Returns zero if not present
  647.      and available.
  648.  
  649.      #define gestaltSDPFindVersion 'dfnd' /* SDP Find version */
  650.  
  651. dict (System [7.1])
  652.      gestaltDictionaryMgrAttr
  653.      Returns information about the Dictionary Manager.
  654.  
  655.      enum {
  656.      #define gestaltDictionaryMgrAttr 'dict' /* Dictionary Mgr attributes */
  657.      gestaltDictionaryMgrPresent = 0};
  658.  
  659. ditl (System [7.0])
  660.      gestaltDITLExtAttr
  661.      Returns information about the Dialog Manager.
  662.  
  663.      enum {
  664.      gestaltDITLExtAttr 'ditl' /* Dialog Mgr attributes */
  665.      gestaltDITLExtPresent = 0}; /* Dialog Mgr extensions present */
  666.  
  667. dplv (Display Enabler [1.0?])
  668.      (System [7.1.1])
  669.      gestaltDisplayMgrVers &AS05
  670.      Returns Display Manager version as Double BCD.
  671.  
  672.      #define gestaltDisplayMgrVers 'dplv' /* Display Mgr version */
  673.  
  674.      NOTE:
  675.      Version 1 returned the version as INTEGER, version 2 returns it as
  676.      Double BCD. (Jean-Pierre Curcio)
  677.  
  678. dply (Display Enabler [1.0?])
  679.      (System [7.1.1])
  680.      gestaltDisplayMgrAttr &AS05
  681.      Returns information about the Display Manager.
  682.  
  683.      enum {
  684.      #define gestaltDisplayMgrAttr 'dply'     /* Display Mgr attr. */
  685.      gestaltDisplayMgrPresent           = 0,  /* True if Display Mgr is */
  686.                                               /*  present */
  687.      gestalt???                         = 1,  /* seen with System 7.5.2 */
  688.      gestaltDisplayMgrCanSwitchMirrored = 2,  /* True if Display Mgr can */
  689.                                               /*  switch modes on mirrored*/
  690.                                               /*  displays &AD21 */
  691.      gestaltDisplayMgrSetDepthNotifies  = 3}; /* True, SetDepth generates*/
  692.                                               /*  Display  Mgr */
  693.                                               /*  notification &AD21 */
  694.  
  695. drag (Macintosh Drag and Drop ext [1.0])
  696.      (System? [7.5?])
  697.      gestaltDragMgrAttr &AD05
  698.      Returns information about the Drag Manager.
  699.  
  700.      enum {
  701.      #define gestaltDragMgrAttr 'drag' /* Drag Manager attributes */
  702.      gestaltDragMgrPresent         =  0,  /* Drag Manager is present */
  703.      gestaltDragMgrFloatingWind    =  1,  /* &AS09 */
  704.      gestaltPPCDragLibPresent      =  2,  /* &AS09 */
  705.      gestaltDragMgrHasImageSupport =  3,  /* SetDragImage function */
  706.                                           /*  present to drag semi- */
  707.                                           /*  transparant images */
  708.                                           /*  instead of outlines */
  709.                                           /*  (Anonymous) &AT14 */
  710.      gestaltDragMgr???             = 31}; /* set with System 7.5 */
  711.  
  712. dsig (PowerTalk ext [1.0?], part of PowerTalk)
  713.      gestaltDigitalSignatureVersion
  714.      Returns version of the Digital Signature toolbox as BCD.
  715.  
  716.      #define gestaltDigitalSignatureVersion 'dsig' /* Digitial Signature */
  717.                                                    /*  version */
  718.  
  719. eajt (Easy Access cp [7.0])
  720.      gestaltEasyAccessJTable
  721.      Returns the base address of the Easy Access jump-trap table.
  722.  
  723.      #define gestaltEasyAccessJTable 'eajt' /* Easy Access jump-trap */
  724.                                             /*  table &M01 */
  725.  
  726.      NOTE:
  727.      The first time you call this selector Easy Access tries to open a
  728.      resource file to find the value, which at least causes a freeze when
  729.      called from within MacBugs with the Gestalt dcmd. &AD31
  730.  
  731. easy (Easy Access cp [6.0.4?])
  732.      gestaltEasyAccessAttr
  733.      Returns information about the status of Easy Access.
  734.  
  735.      enum {
  736.      gestaltEasyAccessAttr 'easy'  /* Easy Access attributes */
  737.      gestaltEasyAccessOff    = 0,  /* Easy Access present but off */
  738.      gestaltEasyAccessOn     = 1,  /* Easy Access on */
  739.      gestaltEasyAccessSticky = 2,  /* Easy Access "Sticky" */
  740.      gestaltEasyAccessLocked = 3}; /* Easy Access "Locked" */
  741.  
  742.      NOTE:
  743.      The values listed above are not returned with System 7 and later.
  744.      Because of a bug different values are returned. This problem is
  745.      acknowledged by Apple, but it is unclear when it will be fixed. They
  746.      know about it since September 1992... (Rene Ros)
  747.  
  748. edtn (System [7.0])
  749.      (Macintosh Easy Open cp [1.0?])
  750.      gestaltEditionMgrAttr
  751.      Returns information about the Edition Manager.
  752.  
  753.      enum{
  754.      #define gestaltEditionMgrAttr 'edtn' /* Edition Mgr attributes */
  755.      gestaltEditionMgrPresent          = 0,
  756.      gestaltEditionMgrTranslationAware = 1}; /* &AD03 */
  757.  
  758. evnt (System [7.0]) &AS05
  759.      (Apple Event Manager ext [1.0.1], part of AppleScript Setup)
  760.      gestaltAppleEventsAttr
  761.      Returns information about Apple Events.
  762.  
  763.      enum {
  764.      #define gestaltAppleEventsAttr 'evnt' /* Apple events attributes */
  765.      gestaltAppleEventsPresent = 0,  /* True if Apple Events present */
  766.                                      /*  &AS05 */
  767.      gestaltScriptingSupport   = 1,
  768.      gestaltOSLInSystem        = 2}; /* OSL is in system so don`t use */
  769.                                      /*  the one linked */
  770.  
  771.      NOTE:
  772.      These declarations in the AEObjects.h file (on ETO 14) should be
  773.      ignored:
  774.      gestaltObjectSupportLibraryInSystem = 1
  775.      gestaltObjectSupportLibraryPowerPCSupport = 2
  776.  
  777. Apple System Software (F-K)
  778. ===========================
  779. This chapter lists selector codes of which the meaning is documented and
  780. the first character of the selector code is in the F-J range.
  781.  
  782. flag (Network Extension ext [System 7.0 &AT02])
  783.      gestaltFlagshipAttr
  784.      Returns information about the Flagship Naming Services.
  785.  
  786.      enum {
  787.      #define gestaltFlagshipAttr 'flag' /* &M01 */
  788.      gestaltFlagshipPresent    = 0,  /* &M01 */
  789.      gestaltFlagshipRegistered = 1}; /* &M01 */
  790.  
  791. fnd  (AppleShare? ext [3.6?]) &AD18
  792.      gestaltFinderVolumeGrade?
  793.      Returns a volume grade value. If the volume grade of a (remote) volume
  794.      the Finder (version 7.5.1 and later) is copying to is less than the
  795.      returned value, a buffer is used for which the size is returned by the
  796.      'fnd^' (666E 64A4) selector.
  797.  
  798.      #define gestaltFinderVolumeGrade? 'fnd '
  799.  
  800.      NOTE:
  801.      See also the 'fnd^' (666E 64A4) selector entry.
  802.  
  803.      AppleShare 3.6 (part of System 7.5 Update 2.0) seems to install two
  804.      other selectors instead. The 'fnd ' selector seems to be replaced by
  805.      (OSType) 0x666E 64A0 (last byte: option-t). (Anonymous)
  806.  
  807. fnd^ (AppleShare? ext [3.6?]) &AD18
  808.      gestaltFinderBufferSize? (666E 64A4)
  809.      Returns the size of the buffer used to copy files to a (remote) volume
  810.      with a volume grade value less then the value returned by the 'fnd '
  811.      selector.
  812.  
  813.      #define gestaltFinderBufferSize? 'fnd^'
  814.  
  815.      NOTES:
  816.      The ^ is actually the option-6 character (0xA4).
  817.  
  818.      See also the 'fnd ' selector entry.
  819.  
  820.      AppleShare 3.6 (part of System 7.5 Update 2.0) seems to install two
  821.      other selectors instead. The 'fnd ' selector seems to be replaced by
  822.      (OSType) 0x666E 64A7 (last byte: option-s). (Anonymous)
  823.  
  824. fndr (Finder [7.1.1]) &AS04
  825.      (Finder Scripting Extension ext [1.2?])
  826.      (Finder Clipping Extension ext [7.1.4?])
  827.      gestaltFinderAttr
  828.      Returns information about the Finder.
  829.  
  830.      enum {
  831.      #define gestaltFinderAttr 'fndr'
  832.      gestaltFinderDropEvent          = 0,
  833.      gestaltFinderMagicPlacement     = 1,
  834.      gestaltFinderCallsAEProcess     = 2,
  835.      gestaltOSLCompliantFinder       = 3,  /* supports Finder Event Suite */
  836.      gestaltFinderSupports4GBVolumes = 4,  /* implemented by System 7.5.1 */
  837.                                            /*  but bit not set? */
  838.      gestaltFinderHandlesCFMFailures = 5,
  839.      gestaltFinderHasClippings       = 6}; /* &AD12 */
  840.  
  841. fold (System [7.0])
  842.      gestaltFindFolderAttr
  843.      Returns information about the FindFolder function.
  844.  
  845.      enum {
  846.      gestaltFindFolderAttr 'fold'   /* FindFolder attributes */
  847.      gestaltFindFolderPresent = 0}; /* FindFolder function available */
  848.  
  849. font (System [7.0])
  850.      (TrueType INIT ext for System 6)
  851.      gestaltFontMgrAttr
  852.      Returns information about the Font Manager.
  853.  
  854.      enum {
  855.      #define gestaltFontMgrAttr 'font' /* Font Mgr attributes */
  856.      gestaltOutlineFonts     = 0,  /* TrueType present */
  857.      gestaltFontMgr???       = 1,  /* set with System 7.1 & 7.5 */
  858.      gestaltDiskCachedFonts? = 2}; /* Disk Cached Fonts available? */
  859.  
  860.      NOTE:
  861.      Inside the Inline Extension 1.0 with KanjiTalk7, which was compiled
  862.      with full subroutine names, there is a subroutine called
  863.      'DiskCachedFontsAvailable' in an INIT resource which checks bit 2
  864.      of the gestaltFontMgrAttr selector response. (Marco Piovanelli)
  865.  
  866. fpu  (System [6.0.4])
  867.      gestaltFPUType
  868.      Returns a value that indicates the FPU-type, if any.
  869.  
  870.      enum {
  871.      gestaltFPUType 'fpu ' /* FPU Type */
  872.      gestaltNoFPU    = 0,  /* no FPU */
  873.      gestalt68881    = 1,  /* 68881 FPU */
  874.      gestalt68882    = 2,  /* 68882 FPU */
  875.      gestalt68040FPU = 3}; /* built-in 68040 FPU &S01 */
  876.  
  877.      NOTE: See also the 'FPUE' entry in the Third Parties chapter.
  878.  
  879. fs   (720K Floppy Disk Formatter ext [1.0a3?],
  880.       part of the Hardware System Update [2.0])
  881.      (Apple Share ext [AS 3.0/SYS 7.0])
  882.      (File System Manager ext [1.2])
  883.      (System [7.0])
  884.      gestaltFSAttr
  885.      Returns information about the file system.
  886.  
  887.      enum {
  888.      #define gestaltFSAttr 'fs  ' /* file-system attributes */
  889.      gestaltFullExtFSDispatching = 0,  /* exports HFSDispatch traps */
  890.      gestaltHasFSSpecCalls       = 1,  /* supports FSSpec records */
  891.      gestaltHasFileSystemManager = 2,  /* has the File System Manager */
  892.                                        /*  &S01 */
  893.      gestaltFSMDoesDynamicLoad   = 3,  /* FSM supports dynamic loads */
  894.                                        /*  &AD12 */
  895.      gestaltFSSupports4GBVols    = 4,  /* FS supports 4 gigabyte volumes */
  896.                                        /*  &AD14 */
  897.      gestaltFSSupports2TBVols    = 5,  /* FS supports 2 terabyte volumes */
  898.                                        /*  and PBXGetVInfo available */
  899.                                        /*  &AD14 */
  900.      gestaltHasExtendedDiskInit  = 6}; /* has extended Disk */
  901.                                        /*  Initialization calls &AD12 */
  902.  
  903.      NOTES:
  904.      See also the gestaltFSMVersion ('fsm ') selector.
  905.  
  906.      See 'Reports' chapter (QuickTime section) for more information.
  907.  
  908. fsm  (File System Manager ext [1.2])
  909.      gestaltFSMVersion &AD14
  910.      Returns File System Manager version as BCD.
  911.  
  912.      #define gestaltFSMVersion 'fsm '
  913.  
  914.      NOTE:
  915.      See also the gestaltFSAttr ('fs  ') selector.
  916.  
  917.      While both FSM 1.2 and System 7.5 install/patch three traps
  918.      (_FileSysMgr, _HFSUtils and _Pack2 (Extended Disk Initialization
  919.      Package)) it happens that System 7.5 does not install the
  920.      gestaltFSMVersion ('fsm ') selector. It does set the FSM related bits
  921.      of the gestaltFSAttr ('fs  ') selector. (Fabrizio Oddone)
  922.      This selector is installed correctly by System 7.5.1. (Rene Ros)
  923.  
  924. fxfr (System [7.0])
  925.      gestaltFXfrMgrAttr
  926.      Returns information about the File Transfer Manager.
  927.  
  928.      enum {
  929.      #define gestaltFXfrMgrAttr 'fxfr' /* File Transfer Mgr attributes */
  930.      gestaltFXfrMgrPresent     = 0,   /* File Transfer Mgr present */
  931.      gestaltFXfrMgrMultiFile   = 1,   /* supports FTSend and FTReceive */
  932.                                       /*  &AS02 */
  933.      gestaltFXfrMgrErrorString = 2,   /* supports FTGetErrorString */
  934.                                       /*  &AS02/S02 */
  935.      gestaltFXfrMgr???         = 3?}; /* new, see future technote */
  936.                                       /*  set with System 7.5 */
  937.  
  938. gval (GestaltValue glue code)
  939.      gestaltValueTable?
  940.      Returns a pointer to a table with the selectors and values managed
  941.      by the GestaltValue code. (Marco Piovanelli)
  942.  
  943.      #define gestaltValueTable? 'gval'
  944.  
  945.      WARNING:
  946.      Although this information isn't officially confirmed, it is probably
  947.      correct.
  948.  
  949.      NOTES:
  950.      Although System 7.5 implements the GestaltValue functions it does not
  951.      install this selector because the GestaltValue table is combined with
  952.      the normal Gestalt table (See the 'tabl' entry). Only with system
  953.      software before 7.5 this selector is installed by the glue code.
  954.      (Rene Ros)
  955.  
  956.      See 'Reports' chapter (GestaltValue section) for more information.
  957.  
  958. hdwr (System [6.0.4]) INF
  959.      gestaltHardwareAttr
  960.      Returns information about the hardware configuration of the machine.
  961.  
  962.      enum {
  963.      #define gestaltHardwareAttr 'hdwr' /* hardware attributes */
  964.      gestaltHasVIA1         =  0,  /* VIA 1 */
  965.      gestaltHasVIA2         =  1,  /* VIA 2 */
  966.      gestaltHasRBV          =  2,  /* RBV &M01 */
  967.      gestaltHasASC          =  3,  /* ASC (or compatible with) */
  968.      gestaltHasSCC          =  4,  /* SCC &M01 */
  969.      gestaltHasOSS          =  5,  /* OSS &M01 */
  970.      gestaltHasSCSIDMA      =  6,  /* 53C80 SCSI DMA &M01 */
  971.      gestaltHasSCSI         =  7,  /* 53C80 SCSI */
  972.      gestaltHasSWIMIOP      =  8,  /* SWIM IOP &M01 */
  973.      gestaltHasSCCIOP       =  9,  /* SCC IOP &M01 */
  974.      gestaltHasFitch        = 10,  /* Fitch memory Controller &M02 */
  975.      gestaltHasIWM          = 11,  /* IWM &M01 */
  976.      gestaltHasPWM          = 12,  /* PWM disk speed buffer &M02 */
  977.      gestaltHasRAMSndBuff   = 13,  /* RAM-based sound buffer &M02 */
  978.      gestaltHasVideoDAConv  = 14,  /* Video D/A Converter &M02 */
  979.      gestaltHasPGC          = 15,  /* PGC (parity control) &M02 */
  980.      gestaltHasRPU?         = 16,  /* Random Parity Unit */
  981.      gestaltHasOMC?         = 17,  /* Orwell Memory Controller */
  982.      gestaltHasVISARBV?     = 18,  /* VISA Ram Based Video */
  983.      gestaltHasSoftPowerOff = 19,  /* Software PowerOff */
  984.                                    /*  (since System 7.0?) &S01 */
  985.      gestaltHasSonic        = 20,  /* Sonic (built-in ethernet) &M01 */
  986.      gestaltHasSCSI961      = 21,  /* Int. 53C96 SCSI &AT01 */
  987.      gestaltHasSCSI962      = 22,  /* Ext. 53C96 SCSI &AT01 */
  988.      gestaltHasDAFBVideo    = 23,  /* DAFB Video &M01 */
  989.      gestaltHasUniversalROM = 24,  /* Universal ROM &AT04 */
  990.      gestaltHasJMC          = 25,  /* Jaws Memory Controller? */
  991.      gestaltNeedsRESET      = 26,  /* ??? set on PowerMac, C660AV and */
  992.                                    /*  under MAE 1.0 */
  993.      gestalt???             = 27,  /* ??? set on PM 7500/100 with */
  994.                                    /*  System 7.5.3 */
  995.      gestaltHasEnhancedLtalk= 30}; /* Enhanced LocalTalk &AD21 */
  996.  
  997.      NOTES:
  998.      See for additional information the TN "M.OV.GestaltSysenvirons" (OV 16).
  999.  
  1000.      On the Mac IIfx and Quadra 900 the gestaltHasSCC bit always returns 0
  1001.      because the SCC is isolated by I/O processors. When the Compatibility
  1002.      Switch control panel is used the bit is set. &AD12
  1003.  
  1004.      The old IM VI listed this selector as an environmental selector but
  1005.      IM OS Utilities now lists it as an informational selector.
  1006.  
  1007. help (System [7.0])
  1008.      gestaltHelpMgrAttr
  1009.      Returns information about the Help Manager.
  1010.  
  1011.      enum {
  1012.      #define gestaltHelpMgrAttr 'help' /* Help Mgr attributes */
  1013.      gestaltHelpMgrPresent    =  0,  /* Help Mgr present */
  1014.      gestaltHelpMgrExtensions =  1,  /* Help Mgr extensions installed */
  1015.                                      /*  &AS03 */
  1016.      gestaltAppleGuideIsDebug = 30,  /* Apple Guide is debugging version */
  1017.                                      /*  &AS12 */
  1018.      gestaltAppleGuidePresent = 31}; /* Apple Guide is available &AS12 */
  1019.  
  1020. hrad (System? [7.5.3?])
  1021.      (System 7.5 Update enbl [2.0])
  1022.      gestaltHardwareVendorCode &AS22
  1023.      Returns hardware vendor information.
  1024.  
  1025.      #define gestaltHardwareVendorCode 'hrad'
  1026.      #define gestaltHardwareVendorApple 'Appl' /* Hardware built by Apple*/
  1027.  
  1028.      NOTE:
  1029.      System 7.5.3 on a PowerCurve 601/120 does not install this selector
  1030.      nor 'srad'.
  1031.      (Mark Schrier)
  1032.  
  1033.      See also the 'srad' selector in this section.
  1034.  
  1035. hscd (High Sierra File Access ext [5.0], part of Apple CD-ROM Software) 
  1036.      (ISO 9660 File Access ext [1.0-4.0], part of Apple CD-ROM Software)
  1037.      gestaltHighSierraVersion? &AT03
  1038.      Returns High Sierra File Access version in BCD.
  1039.  
  1040.      #define gestaltHighSierraVersion? 'hscd' /* High Sierra Fileaccess */
  1041.                                               /*  version */
  1042.  
  1043.      NOTE: The returned version is obtained from 'vers' resource ID# 1.
  1044.  
  1045. icmp (QuickTime ext [1.0])
  1046.      gestaltCompressionMgr
  1047.      Returns Compression Manager version as Integer.
  1048.  
  1049.      #define gestaltCompressionMgr 'icmp' /* determines if Image */
  1050.                                           /*  Compression manager is */
  1051.                                           /*  available &AS01 */
  1052.  
  1053. icon (System 7.5 Update ext [1.0])
  1054.      gestaltIconUtilities
  1055.      Returns information about the Icon Utilities routines.
  1056.  
  1057.      enum {
  1058.      #define gestaltIconUtilities 'icon' /* Icon Utils attributes */
  1059.      gestaltIconUtilitiesPresent = 0};
  1060.  
  1061.      NOTE:
  1062.      This selector is supposed to be implemented since System 7.1.2. You
  1063.      need to determine if the _IconDispatch A-trap (0xAB49) is available
  1064.      instead since the Icon Utilities are actually available since
  1065.      System 7.0. &AD13/AT01
  1066.      System 7.5.1 finally implements this selector. (Anonymous)
  1067.  
  1068. iic  (System? [7.5?])
  1069.      gestaltIICAttr &AS19
  1070.      Returns information about the Inter-Integrated Circuit Bus (IIC).
  1071.  
  1072.      enum {
  1073.      #define gestaltIICAttr 'iic ' /* Inter-Integrated Circuit Bus */
  1074.      gestaltStdIIC         = 0,    /* standard IIC */
  1075.      gestaltCombinedIIC    = 1,    /* combined format IIC */
  1076.      gestaltExtendedIIC    = 2,    /* extended IIC */
  1077.      gestaltMultiIIC       = 3,    /* multiple bus master IIC */
  1078.      gestaltGeneralCallIIC = 4,    /* general call IIC */
  1079.      gestaltFastIIC        = 5};   /* fast IIC */
  1080.  
  1081. intd (Powerbook Duo Enabler [1.0])
  1082.      (System [7.5])
  1083.      (System 7.5 Update [1.0?])
  1084.      (System Enabler 111 [1.0])
  1085.      (System Enabler 121 [1.0])
  1086.      (System Enabler 131 [1.0])
  1087.      (System Enabler 201 [1.0])
  1088.      gestaltInternalDiskAttr?
  1089.      Returns information about the internal harddisk of portable
  1090.      computers?
  1091.  
  1092.      enum {
  1093.      #define gestaltInternalDiskAttr? 'intd' /* PB Internal HD attr. */
  1094.      gestaltHasInternalDisk? =  0,  /* TRUE if machine has internal HD */
  1095.      gestaltDiskSleeping?    =  1,  /* TRUE if internal HD is spon down */
  1096.      gestalt???              = 24}; /* unknown, set on PB180, PB210, */
  1097.                                     /*  PB540 and others? */
  1098.  
  1099.      WARNING:
  1100.      This information is from a reliable source. However, is it not
  1101.      officially confirmed by Apple and there are no constants defined.
  1102.  
  1103.      NOTE:
  1104.      On a PB Duo 210 (PowerBook Duo Enabler) I haven't seen bit 1 set with
  1105.      System 7.1, even when the disk is spinning. It is also reported the
  1106.      bit is clear when the disk is spinning and set when down (seen on
  1107.      PB Duo 230). (David Lewis, Rene Ros)
  1108.      This problem seems to be fixed with System 7.5.1 and later but with
  1109.      bit 1 having the reversed meaning than originally thought: disk spon
  1110.      down. (Rene Ros)
  1111.  
  1112. iscd (ISO 9660 File Access ext [5.0], part of Apple CD-ROM Software)
  1113.      gestaltISO9660Version?
  1114.      Returns ISO 9660 File Access version in BCD?
  1115.  
  1116.      #define gestaltISO9660Version? 'iscd'
  1117.  
  1118.      NOTE:
  1119.      Versions before 5.0 installed the 'hscd' selector.
  1120.  
  1121. kbd  (System [6.0.4])
  1122.      gestaltKeyboardType
  1123.      Returns a value that indicates the type of keyboard on which the last
  1124.      keystroke was seen.
  1125.  
  1126.      enum {
  1127.      #define gestaltKeyboardType 'kbd ' /* keyboard type */
  1128.      gestaltMacKbd            =  1,  /* Macintosh Keyboard */
  1129.      gestaltMacAndPad         =  2,  /* Macintosh Keyboard with Pad */
  1130.      gestaltMacPlusKbd        =  3,  /* Macintosh Plus Keyboard */
  1131.      gestaltExtADBKbd         =  4,  /* Extended ADB Keyboard */
  1132.      gestaltStdADBKbd         =  5,  /* Standard ADB Keyboard */
  1133.      gestaltPrtblADBKbd       =  6,  /* Portable ADB Keyboard */
  1134.      gestaltPrtblISOKbd       =  7,  /* Portable ISO ADB Keyboard */
  1135.      gestaltStdISOADBKbd      =  8,  /* Standard ISO ADB Keyboard */
  1136.      gestaltExtISOADBKbd      =  9,  /* Extended ISO ADB Keyboard */
  1137.      gestaltADBKbdII          = 10,  /* ADB Keyboard II */
  1138.      gestaltElmerKbd          = 10,  /* = gestaltADBKbdII, used in some */
  1139.                                      /*  sample code */
  1140.      gestaltADBISOKbdII       = 11,  /* ISO ADB Keyboard II */
  1141.      gestaltElmerISOKbd       = 11,  /* = gestaltADBISOKbdII, used in */
  1142.                                      /*  some sample code */
  1143.      gestaltPwrBookADBKbd     = 12,  /* PowerBook Keyboard &AT01 */
  1144.      gestaltPwrBookISOADBKbd  = 13,  /* PowerBook Keyboard (ISO) &AT01 */
  1145.      gestaltAppleAdjustKeypad = 14,  /* Apple Adjustable Keypad &AT01 */
  1146.      gestaltAppleAdjustADBKbd = 15,  /* US Adjustable Keyboard &AS21 */
  1147.      gestaltAppleAdjustISOKbd = 16,  /* ISO Adjustable Keyboard &AS21 */
  1148.      gestaltJapanAdjustADBKbd = 17,  /* Japan Adjustable Keyboard &AS21 */
  1149.  
  1150.      /* PowerBook Extended Keyboards &AS15 */
  1151.      gestaltPwrBkExtISOKbd    = 20,  /* PowerBook Extended Intl. */
  1152.      gestaltPwrBkExtJISKbd    = 21,  /* PowerBook Extended Japanese */
  1153.      gestaltPwrBkExtADBKbd    = 24}; /* PowerBook Extended Domestic */
  1154.  
  1155.      ======================================================================
  1156.      Combinations of System Global KbdType/ADB Mgr devType and
  1157.      gestaltKeyboardType values                                       &AT01
  1158.      ======================================================================
  1159.      KbdType    gestaltKeyboardType     Gestalt Name
  1160.      (hex.)     (decimal)
  1161.      ----------------------------------------------------------------------
  1162.       0x03          1                   gestaltMacKbd
  1163.       0x13          2                   gestaltMacAndPad
  1164.       0x0B          3                   gestaltMacPlusKbd
  1165.       0x02          4                   gestaltExtADBKbd
  1166.       0x01          5                   gestaltStdADBKbd
  1167.       0x06          6                   gestaltPrtblADBKbd
  1168.       0x07          7                   gestaltPrtblISOKbd
  1169.       0x04          8                   gestaltStdISOADBKbd
  1170.       0x05          9                   gestaltExtISOADBKbd
  1171.       0x08         10                   gestaltADBKbdII
  1172.       0x09         11                   gestaltADBISOKbdII
  1173.       0x0C         12                   gestaltPwrBookADBKbd
  1174.       0x0D         13                   gestaltPwrBookISOADBKbd
  1175.       0x0E         14                   gestaltAppleAdjustKeypad
  1176.       0x10         15                   gestaltAppleAdjustADBKbd, US
  1177.       0x11         16                   gestaltAppleAdjustADBKbd, ISO
  1178.       0x12         17                   gestaltAppleAdjustADBKbd, Japanese
  1179.       0x13         20                   gestaltPwrBkExtISOKbd ?
  1180.       0x14         21                   gestaltPwrBkExtJISKbd ?
  1181.       0x17         24                   gestaltPwrBkExtADBKbd ?
  1182.      ----------------------------------------------------------------------
  1183.  
  1184.      NOTES:
  1185.      The Apple Adjustable Keyboard doesn't have its own Gestalt keyboard
  1186.      type defined with some versions of System Software (7.1?). It changes
  1187.      a low memory global but this doesn't change the Gestalt response. This
  1188.      problem is corrected by the Hardware System Update 2.0 and later.
  1189.      An Adjustable Keyboard attached to a Performa 6300 (System 7.5.1)
  1190.      causes value 16, an unknown keyboard, to be returned.
  1191.  
  1192.      If the keyboard isn't recognized by the Gestalt Mgr, an error is
  1193.      returned. &AD19
  1194.  
  1195.      The PowerMac 7100/66 (System 7.1.2) doesn't install this selector for
  1196.      some reason. Other Macs with Gestalt version 4 do, so it isn't
  1197.      intentional.
  1198.  
  1199.      You may find a Gestalt header file which lists the Extended ADB
  1200.      keyboard as three different types (Domestic, International and
  1201.      Japanese) instead of one as later was corrected by Apple in a
  1202.      Technical Note. Even the Gestalt header file for ETO #18 lists the
  1203.      old (?) info, but should I start doubting about the correctness of the
  1204.      Technical Note?
  1205.      The KbdType numbers for the PowerBook Extended Keyboards were found
  1206.      with the PTCH 5 resource of the Hardware System Update 2.0.
  1207.      (Rene Ros)
  1208.  
  1209.      Since this selector returns the type of the keyboard last touched
  1210.      and because there can be more than one keyboard, MacDTS considers this
  1211.      selector to be obsolete. You should use GetADBInfo instead and check
  1212.      the orgADBAddr field for a keyboard (0x02) and the devType field
  1213.      contains the keyboard device type. It uses the same values as the
  1214.      KbdType low memory variable, see the table above. &AD07/AT01
  1215.  
  1216. kpcd (Apple Photo Access ext [1.0], part of Apple CD-ROM Software) &AT03
  1217.      gestaltApplePhotoAccessVersion?
  1218.      Returns Apple Phote Access version in BCD.
  1219.  
  1220.      #define gestaltApplePhotoAccessVersion? 'kpcd'
  1221.  
  1222.      NOTE:
  1223.      The above is what the documentation says. However it seems to return
  1224.      always 0xFFFFFF7 as response.
  1225.  
  1226. Apple System Software (L-N)
  1227. ===========================
  1228. This chapter lists selector codes of which the meaning is documented and
  1229. the first character of the selector code is in the K-N range.
  1230.  
  1231. lmem (System [6.0.4])
  1232.      gestaltLowMemorySize
  1233.      Returns the amount of the low-memory area in bytes.
  1234.  
  1235.      #define gestaltLowMemorySize 'lmem' /* low-memory area size */
  1236.  
  1237. lram (System [6.0.4])
  1238.      gestaltLogicalRAMSize
  1239.      Returns the amount of logical memory available in bytes.
  1240.  
  1241.      #define gestaltLogicalRAMSize 'lram' /* logical RAM size */
  1242.  
  1243.      NOTE:
  1244.      The returned value may not be accurate because an adjustment to the
  1245.      number is performed to yield the best possible estimate of the
  1246.      remaining RAM. The discrepancy is usually because of different color
  1247.      depth settings for on-board video and because of the NanoKernel
  1248.      (68K emulator on Power Macintosh computers). The latter takes about
  1249.      870K. &AD18
  1250.  
  1251. mach (System [6.0.4]) INF
  1252.      gestaltMachineType
  1253.      Returns one of the following values, indicating the type of
  1254.      machine.
  1255.  
  1256.      enum {
  1257.      #define gestaltMachineType 'mach' /* machine type */
  1258.  
  1259.      gestaltClassic                =   1, /* Macintosh 128K and 512 */
  1260.      gestaltMacXL                  =   2,
  1261.      gestaltMac512KE               =   3,
  1262.      gestaltMacPlus                =   4,
  1263.      gestaltMacSE                  =   5,
  1264.      gestaltMacII                  =   6,
  1265.      gestaltMacIIx                 =   7,
  1266.      gestaltMacIIcx                =   8,
  1267.      gestaltMacSE030               =   9, /* Macintosh SE/30 */
  1268.      gestaltPortable               =  10,
  1269.      gestaltMacPortable            = gestaltPortable,
  1270.      gestaltMacIIci                =  11,
  1271.      gestaltPowerMac8100_120       =  12, /* Observed but not released */
  1272.      gestaltMacIIfx                =  13,
  1273.      gestaltMacClassic             =  17,
  1274.      gestaltMacIIsi                =  18,
  1275.      gestaltMacLC                  =  19,
  1276.      gestaltQuadra900              =  20,
  1277.      gestaltPowerBook170           =  21,
  1278.      gestaltQuadra700              =  22,
  1279.      gestaltClassicII              =  23,
  1280.      gestaltPowerBook100           =  24,
  1281.      gestaltPowerBook140           =  25,
  1282.      gestaltQuadra950              =  26,
  1283.      gestaltMacLCIII               =  27,
  1284.      gestaltPerforma450            = gestaltMacLCIII,
  1285.      gestaltPowerBookDuo210        =  29,
  1286.      gestaltPowerBook210           = gestaltPowerBookDuo210,
  1287.      gestaltPowerBook230           = gestaltPowerBookDuo230,
  1288.      gestaltMacCentris650          =  30,
  1289.      gestaltPaulaMac?              =  31, /* "Paula's Desk Macintosh" in
  1290.                                              PowerPC Enabler 1.1 */
  1291.      gestaltPowerBookDuo230        =  32,
  1292.      gestaltPowerBook180           =  33,
  1293.      gestaltPowerBook160           =  34,
  1294.      gestaltMacQuadra800           =  35,
  1295.      gestaltMacQuadra650           =  36,
  1296.      gestaltMacLCII                =  37,
  1297.      gestaltPerforma40x            = gestaltMacLCII,
  1298.      gestaltPerforma430            = gestaltMacLCII,
  1299.      gestaltPowerBookDuo250        =  38,
  1300.      gestaltPowerMac9150           =  39,
  1301.      gestaltAWS9150_80             = gestaltPowerMac9150,
  1302.                                           /* Workgroup Server 9150/80 
  1303.                                              &AD18 */
  1304.      gestaltPowerMac8100_110       =  40,
  1305.                                           /* Also Power Macintosh 8115/110
  1306.                                              &AD18 */
  1307.      gestaltAWS8150_110            = gestaltPowerMac8100_110,
  1308.                                           /* Workgroup Server 8150/110
  1309.                                              &AS20 */
  1310.      gestaltPowerMac5200           =  41,
  1311.                                           /* Also Power Macintosh 5300
  1312.                                              &AS21 */
  1313.      gestaltPowerMac5200_75        = gestaltPowerMac5200,
  1314.      gestaltPowerMac6200           =  42,
  1315.      gestalt???                    =  43, /* Pre-release Tempest/Cyclone */
  1316.      gestaltMacIIvi                =  44,
  1317.      gestaltMacIIvm                =  45,
  1318.      gestaltPerforma600            = gestaltMacIIvm,
  1319.      gestaltPowerMac6100_66?       =  46, /* From not to be released ROM 
  1320.                                              image. If you observe this
  1321.                                              value, it's a prerelease
  1322.                                              system. */
  1323.      gestaltPowerMac7100_80        =  47,
  1324.      gestaltMacIIvx                =  48,
  1325.      gestaltMacColorClassic        =  49,
  1326.      gestaltPerforma250            = gestaltMacColorClassic,
  1327.      gestaltPowerBook165c          =  50,
  1328.      gestalt???                    =  51, /* Seen in System 7.5 Update 2.0
  1329.                                              files. */
  1330.      gestaltMacCentris610          =  52,
  1331.      gestaltMacQuadra610           =  53,
  1332.      gestaltPowerBook145           =  54, /* Also Macintosh PowerBook 145b
  1333.                                              &AT01 */
  1334.      gestaltPowerMac8100_100       =  55,
  1335.      gestaltMacLC520               =  56,
  1336.      gestaltAWS9150_120            =  57, /* Workgroup Server 9150/120
  1337.                                              &AD23 */
  1338.      gestalt???                    =  58, /* Codenamed Elixer */
  1339.      gestalt???                    =  59, /* Seen in System 7.5 Update 1.0
  1340.                                              files. */
  1341.      gestaltMacCentris660AV        =  60,
  1342.      gestaltPowerMac8100_60?       =  61, /* Power Macintosh 8100/80
  1343.                                              running at 60 MHz */
  1344.      gestaltPerforma46x            =  62,
  1345.      gestaltPerforma460            = gestaltPerforma46x,
  1346.      gestalt???                    =  63, /* Seen in System 7.5 Update 2.0
  1347.                                              files. */
  1348.      gestaltPowerMac8100_60?       =  64, /* Power Macintosh 8100/60 & 80
  1349.                                              running at 66.6 MHz */
  1350.      gestaltPowerMac8100_80        =  65,
  1351.                                        /* Workgroup Server 8150/80 &AS20 */
  1352.      gestaltPowerMac8100_100?      =  66, /* From not to be released ROM
  1353.                                              image. If you observe this
  1354.                                              value, it's a prerelease
  1355.                                              system. */
  1356.      gestaltPowerMac9500           =  67,
  1357.      gestaltPowerMac7500           =  68, /* Also Power Macintosh
  1358.                                              7600/120 */
  1359.      gestaltPowerMac8500           =  69,
  1360.      gestaltPowerBook180c          =  71,
  1361.      gestaltPowerBook520           =  72, /* Use MaximumProcessorSpeed
  1362.                                              call: 25 mHz for 520 and 33
  1363.                                              mHz for 540 models &AS21 */
  1364.      gestaltPowerBook520c          = gestaltPowerBook520,
  1365.      gestaltPowerBook540           = gestaltPowerBook520,
  1366.      gestaltPowerBook540c          = gestaltPowerBook520,
  1367.      gestaltPowerBook500           = gestaltPowerBook520,
  1368.                                           /* Macintosh PowerBook 500 series
  1369.                                              including Macintosh PowerBook
  1370.                                              550c &AT01 */
  1371.      gestaltPowerBook520_540       = gestaltPowerBook520,
  1372.      gestalt???                    =  73, /* Seen in System 7.5 Update 1.0
  1373.                                              files. */
  1374.      gestaltPowerMac5400           =  74, /* Earlier used for pre-release
  1375.                                              Power Mac named 'PDM Evt 1
  1376.                                              (R.I.P.)' */
  1377.      gestaltPowerMac6100_60        =  75,
  1378.      gestaltAWS6150_60             = gestaltPowerMac6100_60,
  1379.                                           /* Workgroup Server 6150/60
  1380.                                              &AS20 */
  1381.      gestaltPerforma611x           = gestaltPowerMac6100_60,
  1382.      gestaltPowerBookDuo270c       =  77,
  1383.      gestaltMacQuadra840AV         =  78,
  1384.      gestalt???                    =  79, /* Seen in System 7.5 Update 2.0
  1385.                                              files. */
  1386.      gestaltMacLC550               =  80,
  1387.      gestaltPerforma550            = gestaltMacLC550,
  1388.      gestaltPerforma560            = gestaltMacLC550,
  1389.      gestalt???                    =  81, /* Seen in System 7.5 Update 1.0
  1390.                                              files. */
  1391.      gestaltMacColorClassicII?     =  83,
  1392.      gestaltPowerBook165           =  84,
  1393.      gestaltPowerBook190           =  85,
  1394.      gestaltLC475_20?              =  86, /* Q605 as a LC475 at 20 Mhz
  1395.                                              instead of 25 Mhz */
  1396.      gestaltLC575_20?              =  87, /* LC575 at 20 MHz instead of
  1397.                                              33 MHz */
  1398.      gestaltMacTV                  =  88,
  1399.      gestaltMacLC475               =  89,
  1400.      gestaltPerforma47x            = gestaltMacLC475,
  1401.      gestaltLC475_33?              =  90, /* Q605 as a LC475 at 33 Mhz
  1402.                                              instead of 25 Mhz */
  1403.      gestaltLC575_25?              =  91, /* LC575 at 25 MHz instead of
  1404.                                              33 MHz */
  1405.      gestaltMacLC575               =  92,
  1406.      gestaltPerforma57x            = gestaltMacLC575,
  1407.      gestaltQ605_20?               =  93, /* Q605 at 20 Mhz instead of
  1408.                                              25 MHz */
  1409.      gestaltMacQuadra605           =  94,
  1410.      gestaltQ605_33?               =  95, /* Q605 at 33 Mhz instead of
  1411.                                              25 MHz */
  1412.      gestalt???                    =  96, /* Seen in System 7.5 Update 2.0
  1413.                                              files. */
  1414.      gestaltQuadra630              =  98,
  1415.      gestaltMac630                 = gestaltQuadra630,
  1416.      gestaltMacLC630               = gestaltQuadra630,
  1417.                                           /* has MC68LC040 but can upgrade
  1418.                                              to Quadra 630 &AT01 */
  1419.      gestaltMacQuadra630           = gestaltQuadra630,
  1420.                                           /* has MC68040 but can upgrade
  1421.                                              &AT01 */
  1422.      gestaltTellShow               = gestaltQuadra630,
  1423.                                           /* Codename for LC630 ? &AD16 */
  1424.      gestaltMacLC580               =  99,
  1425.      gestaltPerforma580            = gestaltMacLC580,
  1426.      gestaltTellXfmr               = gestaltMacLC580,
  1427.                                           /* Codename for LC580 ? &AD16 */
  1428.      gestaltPowerMac6100_66        = 100,
  1429.      gestaltAWS6150_66             = gestaltPowerMac6100_66,
  1430.                                           /* Workgroup Server 6150/66
  1431.                                              &AS20 */
  1432.      gestaltPowerMac6100_80?       = 101, /* Not released */
  1433.      gestaltPowerBookDuo280        = 102,
  1434.      gestaltPowerBookDuo280c       = 103,
  1435.      gestaltPowerMac475            = 104, /* LC 475 and Q 605 PowerPC
  1436.                                              Upgrade Card &AD18 */
  1437.      gestaltPowerMacLC475          = gestaltPowerMac475,
  1438.                                           /* LC 475 and Q 605 PowerPC
  1439.                                              Upgrade Card &AT01 */
  1440.      gestaltPowerMacPerforma47x    = gestaltPowerMac475,
  1441.                                           /* Performa 47x PowerPC Upgrade
  1442.                                              Card &AT01 */
  1443.      gestaltPowerMac575            = 105, /* LC 575 and LC 57x PowerPC
  1444.                                              Upgrade Card &AD18 */
  1445.      gestaltPowerMacLC575          = gestaltPowerMac575,
  1446.                                           /* LC 575 PowerPC Upgrade Card
  1447.                                              &AT01 */
  1448.      gestaltPowerMacPerforma57x    = gestaltPowerMac575,
  1449.                                           /* Performa 47x PowerPC Upgrade
  1450.                                              Card &AT01 */
  1451.      gestaltPowerMac630            = 106, /* Q630, LC630 and P63x PowerPC
  1452.                                              Upgrade Card &AD18 */
  1453.      gestaltPowerMacQuadra630      = gestaltPowerMac630,
  1454.                                           /* Q630 PowerPC Upgrade Card
  1455.                                              &AT01 */
  1456.      gestaltPowerMacLC630          = gestaltPowerMac630,
  1457.                                           /* LC630 PowerPC Upgrade Card
  1458.                                              &AT01 */
  1459.      gestaltPowerMacPerforma63x    = gestaltPowerMac630,
  1460.                                           /* P63x PowerPC Upgrade Card
  1461.                                              &AT01 */
  1462.      gestaltPowerMac580            = 107, /* LC580 (and P58x) PowerPC
  1463.                                              Upgrade Card &AD18 */
  1464.      gestaltPowerMacLC580          = gestaltPowerMac580,
  1465.      gestaltPowerMac7200           = 108, /* also Power Macintosh 8200 */
  1466.      gestaltPowerMac7100_60?       = 111, /* Not released */
  1467.      gestaltPowerMac7100_66        = 112,
  1468.      gestaltPowerMac7100_80?       = 113, /* From not to be released ROM
  1469.                                              image. If you observe this
  1470.                                              value, it's a prerelease
  1471.                                              system. */
  1472.      gestaltPowerMac7100_80b?      = 113, /* PM 7100/66 at 80 Mhz value
  1473.                                              <> PM 7100/80 ! */
  1474.      gestalt???                    = 114, /* Seen in System 7.5 Update 1.0
  1475.                                              files. */
  1476.      gestaltPowerMac7100_82?       = 114, /* Not released */
  1477.      gestaltPowerBook150           = 115,
  1478.      gestaltPowerMac700            = 116, /* Q700 PowerPC Upgrade Card
  1479.                                              &AD18 */
  1480.      gestaltPowerMacQuadra700      = gestaltPowerMac700,
  1481.      gestaltPowerMac900            = 117, /* Q900 PowerPC Upgrade Card
  1482.                                              &AD18 */
  1483.      gestaltPowerMacQuadra900      = gestaltPowerMac900,
  1484.      gestaltPowerMac950            = 118, /* Q950 PowerPC Upgrade Card
  1485.                                              &AD18 */
  1486.      gestaltPowerMacQuadra950      = gestaltPowerMac950,
  1487.      gestaltPowerMacC610           = 119, /* C610 PowerPC Upgrade Card
  1488.                                              &AD18 */
  1489.      gestaltPowerMacCentris610     = gestaltPowerMacC610,
  1490.      gestaltPowerMacC650           = 120, /* C650 PowerPC Upgrade Card
  1491.                                              &AD18 */
  1492.      gestaltPowerMacCentris650     = gestaltPowerMacC650,
  1493.      gestaltPowerMacQ610           = 121, /* Q610 PowerPC Upgrade Card
  1494.                                              &AD18 */
  1495.      gestaltPowerMacQuadra610      = gestaltPowerMacQ610,
  1496.      gestaltPowerMacQ650           = 122, /* Q650 PowerPC Upgrade Card
  1497.                                              &AD18 */
  1498.      gestaltPowerMacQuadra650      = gestaltPowerMacQ650,
  1499.      gestaltPowerMac800            = 123, /* Q800 PowerPC Upgrade Card
  1500.                                              &AD18 */
  1501.      gestaltPowerMacQuadra800      = gestaltPowerMac800,
  1502.      gestaltPowerBookDuo2300       = 124,
  1503.      gestaltPPCPowerBook520_540    = 124, /* Macintosh PowerBook 5xx PPC
  1504.                                              Upgrade Card. The PowerBook
  1505.                                              5300/2300/190 enabler list the
  1506.                                              PB 5xx PPC upgrade as 126!
  1507.                                              &AD28 */
  1508.      gestalt???                    = 125, /* Seen in MAE Enabler */
  1509.      gestaltPowerBook500PPCUpgrade = 126,
  1510.      gestaltPowerBook5300          = 128,
  1511.      gestaltPowerMacIIci?          = 206, /* IIci PPC (observed with
  1512.                                              Daystar Digital 601/66) */
  1513.      gestaltPowerMacIIsi?          = 207, /* Mac IIsi PowerPC Upgrade card,
  1514.                                              seen in MacsBug 2.5.2 */
  1515.      gestaltPowerMacIIvi?          = 208, /* Mac IIvi PowerPC Upgrade card,
  1516.                                              seen in MacsBug 2.5.2 */
  1517.      gestaltPowerMacIIvx?          = 209, /* Mac IIvx PowerPC Upgrade card,
  1518.                                              seen in MacsBug 2.5.2 */
  1519.      gestaltPowerMacIIvm?          = 210, /* Mac IIvm PowerPC Upgrade card,
  1520.                                              seen in MacsBug 2.5.2 */
  1521.      gestaltPowerMacIIfx?          = 211, /* Mac IIfx PowerPC Upgrade card,
  1522.                                              seen in MacsBug 2.5.2 */
  1523.      gestaltNetworkServer500?      = ???, /* Network Server 500/132 */
  1524.      gestaltNetworkServer700?      = ???, /* Network Server 500/132 */
  1525.      gestaltPowerBook550c?         = ???,
  1526.      gestaltPowerMac7600_120?      = ???
  1527.      };
  1528.  
  1529.      NOTES:
  1530.      The Power Macintosh computers also set the three low bits of a 32-bit
  1531.      register at a specified address to a machine identification code.
  1532.  
  1533.      ======================================================================
  1534.      Power Macintosh register identification codes
  1535.      ======================================================================
  1536.      Machine                      Address        Register bits  Source
  1537.      ----------------------------------------------------------------------
  1538.      Power Macintosh 5200         ???            ???
  1539.      Power Macintosh 6100         0x5FFF FFFC    000
  1540.      Power Macintosh 7100         0x5FFF FFFC    010
  1541.      Power Macintosh 7200         ???            ???
  1542.      Power Macintosh 7500         ???            ???
  1543.      Power Macintosh 7600         ???            ???
  1544.      Power Macintosh 8100         0x5FFF FFFC    011
  1545.      Power Macintosh 8200         ???            ???
  1546.      Power Macintosh 8500         ???            ???
  1547.      Power Macintosh 9150         0x5FFF FFFC    100            &AD23
  1548.      Power Macintosh 9500         ???
  1549.      ----------------------------------------------------------------------
  1550.  
  1551.      An upgraded Centris 610 doesn't return 119 (Centris 610 upgrade card?)
  1552.      but 75 (PowerMac 6100). (Carl R. Osterwald)
  1553.      With an upgraded Quadra 700 the upgrade card value is returned. The
  1554.      values for the upgrade cards came from the kMachineNameStrID resource
  1555.      from the Power Mac Upgrade Card enabler distributed with System
  1556.      Update 3.0 on disk 2. The Power Macintosh Card 1.0 control panel
  1557.      checks both the Quadra/Centris machine IDs and the ones for the
  1558.      upgrade cards to determine if it can run. (Rene Ros)
  1559.  
  1560.      With systems prior to System 7.1 these selectors return the same
  1561.      values for the:
  1562.      - Macintosh LC and
  1563.        Macintosh LC II (LC has MC68020,LC II has MC68030)
  1564.      - Macintosh PowerBook 140 and
  1565.        Macintosh PowerBook 145 (use MaximumProcessorSpeed from Power Mgr?,
  1566.                                 16 and 25 MHz resp.)
  1567.  
  1568.      The Developer Notes (available from APDA, on ftp.info.apple.com and on
  1569.      the Developer CD-ROM Series) about some PowerBook models (100, 140,
  1570.      170, 190, PB2300 and PPC Upgrade PB5xx) provide incorrect information
  1571.      regarding the machine type returned by the Gestalt Manager.
  1572.      The Developer Note on the Power Macintosh 9500 doesn't contain any
  1573.      Gestalt info, so it can't be wrong!
  1574.      The Developer Note on the Power Macintosh 7200 says the type value is
  1575.      0x108, this must be 108 (decimal!). (Eric-Paul Rebel)
  1576.      The Developer Note for the Power Macintosh 5400 doesn't know the type
  1577.      value. It shows only question marks. (Rene Ros)
  1578.  
  1579.      IM More Macintosh Toolbox (p. 1-127) lists this selector as
  1580.      'gestaltMachineModel'.
  1581.  
  1582.      You can use the returned value as an index with GetIndString
  1583.      to get the machine's name. The STR# resource ID is:
  1584.        enum {
  1585.        kMachineNameStrID = -16395};
  1586.      See for more information on the Machine Name STR# resource the
  1587.      'Machine Names' section in the 'Reports' chapter.
  1588.  
  1589.      To check which processor clockspeed the machine is running at,
  1590.      use the 'pclk' selector. For the bus clockspeed, use the 'bclk'
  1591.      selector.
  1592.  
  1593.      See for more information on hardware modified Macintosh computers
  1594.      (i.e. clock chipping) and the values they return the 'Clock Chipped'
  1595.      section in the 'Reports' chapter.
  1596.  
  1597.      See for more information on clones the 'Macintosh Compatibles' section
  1598.      in the 'Reports' chapter.
  1599.  
  1600.      See for more information on relabled Macintosh models (i.e. the
  1601.      Performa models) the 'Relabled Macintosh Models' section in the
  1602.      'Reports' chapter.
  1603.  
  1604. malr (PowerTalk ext [1.0?], part of PowerTalk)
  1605.      gestaltSMPMailerVersion
  1606.      Returns the SMP Mailer version as INTEGER. Returns zero if not
  1607.      present and available.
  1608.  
  1609.      #define gestaltSMPMailerVersion 'malr' /* SMP Mailer version */
  1610.  
  1611. mbxa (PowerTalk Manager ext [1.5?])
  1612.      gestaltOCEMailboxAPIAttr &AD32
  1613.      Returns information about the capabilities of the Mailbox.
  1614.  
  1615.      enum {
  1616.      #define gestaltOCEMailboxAPIAttr 'mbxa'
  1617.      gestaltMailboxAPIPresent = 0x01,   /* basic operations on Mailbox */
  1618.                                         /*  and Letter Contents avail. */
  1619.      gestaltSupportsOutbox    = 0x02,   /* examine and act upon the */
  1620.                                         /*  outbox possible */
  1621.      gestaltSupportsErrorLog  = 0x04 }; /* examine and act upon the */
  1622.                                         /*  mailbox error log possible */
  1623.  
  1624.      WARNING:
  1625.      Unlike other selectors returning attributes, the responses are not bit
  1626.      values, but bit masks.
  1627.  
  1628. micn (System [6.0.4]) INF
  1629.      gestaltMachineIcon
  1630.      Returns an icon family resource ID for the current type of
  1631.      Macintosh.
  1632.  
  1633.      #define gestaltMachineIcon 'micn' /* machine ICON/cicn res ID */
  1634.  
  1635.      NOTE:
  1636.      It appears as if this selector always returns the ID of the generic
  1637.      Macintosh icon (like in the Welcome screen), starting with System 7.5.
  1638.      On a PowerBook 5300 with System 7.5.2 installed the icon ID is
  1639.      returned for an icon showing a generic portable computer. (Rene Ros)
  1640.  
  1641. misc (System [6.0.5])
  1642.      gestaltMiscAttr
  1643.      Returns information about miscellaneous pieces of software or
  1644.      hardware.
  1645.  
  1646.      enum {
  1647.      #define gestaltMiscAttr 'misc' /* miscellaneous attributes */
  1648.      gestaltScrollingThrottle = 0,
  1649.      gestaltBootGlobals       = 1,  /* Boot Globals &M02, obsolete? */
  1650.      gestaltSquareMenuBar     = 2};
  1651.  
  1652.      WARNING:
  1653.      The Gestalt function for this selector, at least as implemented by
  1654.      System 7.5.3 and earlier, does not properly restore the D3 register
  1655.      and returns a bogus value in it. (John Mancino)
  1656.  
  1657. mixd (System? [7.1.2?])
  1658.      gestaltMixedModeAttr
  1659.      Returns information about the Mixed Mode Manager.
  1660.  
  1661.      enum {
  1662.      #define gestaltMixedModeAttr 'mixd' /* Mixed Mode Mgr attributes */
  1663.      gestaltMixedModePowerPC       = 0,  /* true if Mixed Mode supports */
  1664.                                          /*  PowerPC ABI calling */
  1665.                                          /*  conventions &AS21 */
  1666.      gestaltPowerPCAware           = 0,  /* old name for */
  1667.                                          /*  gestaltMixedModePowerPC */
  1668.      gestaltMixedModeCFM68K        = 1,  /* true if Mixed Mode supports */
  1669.                                          /*  CFM-68K calling */
  1670.                                          /*  conventions &AS21 */
  1671.      gestaltMixedModeCFM68KHasTrap = 2}; /* true if CFM-68K Mixed Mode */
  1672.                                          /*  implements _MixedModeDispatch */
  1673.                                          /*  (versions 1.0.1 and prior */
  1674.                                          /*  did not) &AS21 */
  1675.  
  1676.      NOTE:
  1677.      The name 'gestaltMixedModeVersion' (as used in IM OS Utilites and
  1678.      IM PowerPC System Software) is incorrect. It may be listed in
  1679.      Gestalt header files for a limited time for backwards compatibility.
  1680.      (Rene Ros)
  1681.  
  1682. mmu  (System [6.0.4])
  1683.      gestaltMMUType
  1684.      Returns a value that indicates the type of MMU currently installed,
  1685.      if any.
  1686.  
  1687.      enum {
  1688.      #define gestaltMMUType 'mmu ' /* MMU Type */
  1689.      gestaltNoMMU    = 0,  /* no MMU */
  1690.      gestaltAMU      = 1,  /* AMU */
  1691.      gestalt68851    = 2,  /* 68851 MMU */
  1692.      gestalt68030MMU = 3,  /* built-in 68030 MMU */
  1693.      gestalt68040MMU = 4,  /* built-in 68040/68LC040 &S01 */
  1694.      gestaltEMMU1    = 5}; /* Emulated MMU type 1, PowerPC MMU &AS05 */
  1695.  
  1696.      NOTE:
  1697.      You should also use this selector to test for the existence of
  1698.      _MemoryDispatch if your code runs before system patches are applied
  1699.      on machines of which the ROM implements _MemoryDispatch but the
  1700.      machine doesn't have a MMU. This may happen with a Mac LC, whose
  1701.      ROM is derived from the Macintosh IIci. &AT09
  1702.  
  1703. mtcp (MacTCP cp [1.1])
  1704.      (Open Tpt MacTCP [3.0a2])
  1705.      gestaltMacTCPVersion? &AD01
  1706.      Returns the version of MacTCP, if opened, as index-value. If MacTCP is
  1707.      not opened a value of 0 is returned.
  1708.  
  1709.      #define gestaltMacTCPVersion? 'mtcp'
  1710.  
  1711.      ======================================================================
  1712.      MacTCP responses
  1713.      ======================================================================
  1714.      Version        Response   Remarks
  1715.      ----------------------------------------------------------------------
  1716.       1.0 - 1.0.3     N/A      Doesn't install selector.
  1717.       1.1 and later    0       MacTCP not opened.
  1718.  
  1719.       1.1              1
  1720.       1.1.1            2
  1721.       2.0.x            3
  1722.       3.0              4       Part of Open Transport 1.0
  1723.      ----------------------------------------------------------------------
  1724.  
  1725.      WARNING:
  1726.      Rumour goes this selector is not installed with A/UX. Versions of
  1727.      MacTCP and A/UX involved are unknown.
  1728.  
  1729.      NOTE:
  1730.      No constants are defined by the documentation.
  1731.  
  1732. nlup (System [7.0])
  1733.      gestaltStdNBPAttr
  1734.      Returns information about the call StandardNBP.
  1735.  
  1736.      enum {
  1737.      #define gestaltStdNBPAttr 'nlup' /* Standard NBP attributes */
  1738.      gestaltStdNBPPresent              = 0,
  1739.      gestaltStdNBPSupportsAutoPosition = 1}; /* StandardNBP takes */
  1740.                                              /*  (-1,-1) for auto- */
  1741.                                              /*  positioning */
  1742.  
  1743. nmgr (System [6.0.5])
  1744.      gestaltNotificationMgrAttr
  1745.      Returns information about the Notification Manager.
  1746.  
  1747.      enum {
  1748.      #define gestaltNotificationMgrAttr 'nmgr' /* Notification Mgr attr. */
  1749.      gestaltNotificationPresent = 0};
  1750.  
  1751. nreg (System [7.5.1])
  1752.      gestaltNameRegistryVersion &AD21
  1753.      Returns the version of Name Registry as ???. When this selector isn't
  1754.      installed you can assume that the machine doesn't have PCI slots.
  1755.      Hence, when present PCI slots may NOT be installed!
  1756.  
  1757.      #define gestaltNameRegistryVersion 'nreg';
  1758.  
  1759.      NOTE:
  1760.      All returned values found so far are always 0! (Rene Ros, Dec. 95)
  1761.  
  1762. nubs (System [6.0.4, 6.0.5, 6.0.7, discontinued])
  1763.      gestaltNuBusSlotCount
  1764.      Returns count of NuBus slots.
  1765.  
  1766.      #define gestaltNuBusSlotCount 'nubs' /* NuBus slot count */
  1767.  
  1768. nvsv (System [Copland?])
  1769.      gestaltNavigationServicesAttr &AD21
  1770.      Returns information about the Navigation Services.
  1771.  
  1772.      enum {
  1773.      #define gestaltNavigationServicesAttr 'nvsv'
  1774.      gestaltNavigationServicesPresent = 0};
  1775.  
  1776.      WARNING:
  1777.      From the Preliminary Copland Headers. May change in the future.
  1778.  
  1779. Apple System Software (O-S)
  1780. ===========================
  1781. This chapter lists selector codes of which the meaning is documented and
  1782. the first character of the selector code is in the O-S range.
  1783.  
  1784. ocet (PowerTalk Manager ext [1.0?], part of PowerTalk)
  1785.      gestaltOCEToolboxVersion
  1786.      Returns the versions of the S&F Server and the OCE Toolbox as BCD.
  1787.      Returns zero if not present and available.
  1788.  
  1789.      enum {
  1790.      #define gestaltOCEToolboxVersion 'ocet' /* OCE Toolbox version */
  1791.      gestaltOCETB    = 0x0102,  /* current OCE Toolbox version 1.0.2 */
  1792.      gestaltSFServer = 0x0100}; /* current S&F Server version 1.0 */
  1793.  
  1794.      NOTE:
  1795.      The high order word will represent the S&F Server version number, and
  1796.      the low order the OCE Toolbox version number both as BCD.
  1797.      These will be zero until the component is up and running.
  1798.  
  1799. oceu (PowerTalk Manager ext [1.0?], part of PowerTalk)
  1800.      gestaltOCEToolboxAttr
  1801.      Returns information about the Open Colloboration Environment Toolbox.
  1802.  
  1803.      enum {
  1804.      #define gestaltOCEToolboxAttr 'oceu' /* OCE Toolbox attributes */
  1805.      gestaltOCETBPresent            = 0x1,   /* OCE toolbox is present, */
  1806.                                              /*  not running */
  1807.      gestaltOCETBAvailable          = 0x2,   /* OCE toolbox is running */
  1808.                                              /*  and available */
  1809.      gestaltOCESFServerAvailable    = 0x4,   /* S&F Server is running */
  1810.                                              /*  and available */
  1811.      gestaltOCTBNativeGlueAvailable = 0x10}; /* PowerPC glue available */
  1812.                                              /*  &AS13 */
  1813.  
  1814.      NOTE:
  1815.      Any (future) remaining OCE attributes may not be established
  1816.      correctly until the attribute gestaltOCETBAvailable is set.
  1817.  
  1818. opfw (System [7.5.2])
  1819.      gestaltOpenFirmwareInfo
  1820.      Returns ???
  1821.  
  1822.      enum {
  1823.      #define gestaltOpenFirmwareInfo 'opfw'
  1824.      gestalt??? = 1};
  1825.  
  1826.      NOTE:
  1827.      This selector may be installed but returns gestaltUnknownErr instead
  1828.      of zero. (Rene Ros)
  1829.  
  1830. os   (System [6.0.4, 7.0 and later])
  1831.      (Process Manager INIT ext [???], part of ???)
  1832.      gestaltOSAttr
  1833.      Returns general information about the Operating System.
  1834.  
  1835.      enum {
  1836.      #define gestaltOSAttr 'os  ' /* O/S attributes */
  1837.      gestaltSysZoneGrowable      =  0,
  1838.      gestaltLaunchCanReturn      =  1,
  1839.      gestaltLaunchFullFileSpec   =  2,
  1840.      gestaltLaunchControl        =  3,
  1841.      gestaltTempMemSupport       =  4,
  1842.      gestaltRealTempMemory       =  5,
  1843.      gestaltTempMemTracked       =  6,
  1844.      gestaltIPCSupport           =  7,
  1845.      gestaltSysDebuggerSupport   =  8,
  1846.      gestaltSkiaGlobalsSwitched  =  9,  /* &AS05 */
  1847.      gestaltBgndMouseDownSupport?= 10,  /* unnamed Process Mgr routine */
  1848.                                         /*  available to indicate if a */
  1849.                                         /*  layer switch is wanted by the */
  1850.                                         /*  application when one of its */
  1851.                                         /*  windows is clicked while in */
  1852.                                         /*  the background. &AS04 */
  1853.      gestalt???                  = 11,  /* on PowerPC, Performa 630 and */
  1854.                                         /*  PB180? */
  1855.      gestalt???                  = 13,  /* unknown, System 7.5 */
  1856.      gestalt???                  = 14,  /* unknown, System 7.5 */
  1857.      gestalt???                  = 15}; /* unknown, System 7.5.1 */
  1858.  
  1859.      NOTES:
  1860.      See the Process Manager chapter in IM Processes for more information
  1861.      about the launch control features. And the Memory Manager chapter in
  1862.      IM Memory about the memory features.
  1863.  
  1864.      Under A/UX 2.x this selector incorrectly returns information about the
  1865.      Process Manager, which isn't available. You should test for A/UX 3.0 or
  1866.      later by using the gestaltAUXVersion ('a/ux') selector. &AT10
  1867.  
  1868.      More information on the unnamed routine which presence is indicated
  1869.      by the gestaltBgndMouseDownSupport? bit can be found in the orginal
  1870.      email from Marco Piovanelli to the editor of the GSL. You can get a
  1871.      copy by emailing this command to the mail archive server:
  1872.           'archive get src/UndocumentedProcesses.h'
  1873.  
  1874.      The header file which lists the gestaltSkiaGlobalsSwitched bit says
  1875.      this:
  1876.      /*gestaltSkiaGlobalsSwitched is #9. I don't know why it is not here*/
  1877.  
  1878.      "Skia" was the code name for QuickDraw GX (MacsBug uses it for trap
  1879.      0xA832, which is the main QuickDraw GX trap).
  1880.      (Lawrence D'Oliveiro, Anonymous)
  1881.  
  1882. ostt (System [6.0.8?])
  1883.      gestaltOSTable
  1884.      Returns the base address of the Operating System trap table.
  1885.  
  1886.      #define gestaltOSTable 'ostt' /* O/S trap table base */
  1887.  
  1888. osyv (sysvINIT ext [???] by T. Tanaka, Apple Computer Japan Inc.)
  1889.      gestaltOldSystemVersion?
  1890.      Returns the version of the system file as BCD which was returned
  1891.      before sysvINIT replaced the gestalt definition with a corrected one.
  1892.  
  1893.      #define gestaltOldSystemVersion? 'osyv'
  1894.  
  1895.      NOTE:
  1896.      Because of a bug with KanjiTalk 6.0.7 this extension (snippet code,
  1897.      available on Developer CD Series) replaces the standard 'sysv' gestalt
  1898.      function with a corrected one to return 0x0607 and installs the
  1899.      'osyv' selector which uses the replaced gestalt definition. &M03
  1900.  
  1901. otan (Open Transport lib [1.0])
  1902.      gestaltOpenTpt &AS18
  1903.      Returns information about the Open Transport software.
  1904.  
  1905.      enum {
  1906.      #define gestaltOpenTpt 'otan'
  1907.      gestaltOpenTptPresent          = 0x00000001,
  1908.      gestaltOpenTptLoaded           = 0x00000002,
  1909.      gestaltOpenTptAppleTalkPresent = 0x00000004,
  1910.      gestaltOpenTptAppleTalkLoaded  = 0x00000008,
  1911.      gestaltOpenTptTCPPresent       = 0x00000010,
  1912.      gestaltOpenTptTCPLoaded        = 0x00000020,
  1913.      gestaltOpenTptNetwarePresent   = 0x00000040,
  1914.      gestaltOpenTptNetwareLoaded    = 0x00000080};
  1915.  
  1916.      NOTE:
  1917.      Contrary to the 'ot  ' selector this one is really installed by
  1918.      Open Transport.
  1919.  
  1920.      With Open Transport 1.08 (and probably lower) the OpenTptTCPLoaded bit
  1921.      is not set when OT TCP is loaded. (John Mancino)
  1922.  
  1923. otvr (Open Transport lib [1.1])
  1924.      gestaltOpenTransportVersion?
  1925.      Returns the version of Open Transport as NumVersion. (Anonymous)
  1926.  
  1927.      #define gestaltOpenTransportVersion? 'otvr'
  1928.  
  1929. pccd (System? [???])
  1930.      gestaltCardServicesAttr &AD24
  1931.      Returns information about the PC Card Manager (for managing i.e.
  1932.      PCMCIA cards).
  1933.  
  1934.      enum {
  1935.      #define gestaltCardServicesAttr 'pccd', /* Card Services attributes */
  1936.      gestaltCardServicesPresent = 0};        /* if set, Card Services is */
  1937.                                              /*  present */
  1938.  
  1939.      NOTE:
  1940.      This selector is not implemented with any current system software
  1941.      (7.5.1) on the PowerBook 500 Series computers.
  1942.  
  1943. pclk (System [7.5.2]) INF?
  1944.      gestaltProcClkSpeed &AS22
  1945.      Returns the processor clock speed in Hz.
  1946.  
  1947.      #define gestaltProcClkSpeed 'pclk'
  1948.  
  1949.      NOTES:
  1950.      Only on Power Macintosh, not on 68K computers?
  1951.  
  1952.      On a PowerBook 5300c with System 7.5.2 this selector returns 99.9999 Mhz,
  1953.      not 100. Small 'off-by-one' bug? (Rene Ros)
  1954.  
  1955.      Some 604-based Power Computing models return the wrong value.
  1956.      (Jean-Pierre Curcio)
  1957.  
  1958.      See also 'bclk' in this chapter.
  1959.  
  1960. pcxg (PC Exchange cp? [???]) &AS04/AS05
  1961.      gestaltPCXAttr
  1962.      Returns information about PC Exchange.
  1963.  
  1964.      enum {
  1965.      #define gestaltPCXAttr 'pcxg'   /* PC Exchange attributes */
  1966.      gestaltPCXHas8and16BitFAT = 0,  /* PC Exchange supports both 8 and */
  1967.                                      /*  16 bit FATs */
  1968.      gestaltPCXHasProDOS       = 1}; /* PC Exchange supports ProDOS */
  1969.  
  1970.      NOTE:
  1971.      [This selector] isn't supported by all versions of PCExchange.
  1972.      [...] to find out if MS-DOS (or ProDOS) disks can be mounted you can
  1973.      use the File System Manager' GetFSInfo routine to determine what
  1974.      FSM-based file systems are installed. (Jim Luther)
  1975.  
  1976. pgsz (System [6.0.4])
  1977.      gestaltLogicalPageSize
  1978.      Returns the logical page size in bytes.
  1979.  
  1980.      #define gestaltLogicalPageSize 'pgsz' /* logical page size */
  1981.  
  1982.      NOTE:
  1983.      The value is unknown on 68000 machines, Gestalt will return an error.
  1984.  
  1985. pop! (System [7.0])
  1986.      gestaltPopupAttr
  1987.      Returns information about the pop-up control definition.
  1988.  
  1989.      enum {
  1990.      #define gestaltPopupAttr 'pop!' /* pop-up CDEF attributes */
  1991.      gestaltPopupPresent = 0}; /* pop-up CDEF available */
  1992.  
  1993. powr (System [6.0.4])
  1994.      gestaltPowerMgrAttr
  1995.      Returns information about the Power Manager, if present.
  1996.  
  1997.      enum {
  1998.      #define gestaltPowerMgrAttr 'powr' /* Power Mgr attributes */
  1999.      gestaltPMgrExists         = 0,  /* Power Mgr is present */
  2000.      gestaltPMgrCPUIdle        = 1,  /* CPU can idle */
  2001.      gestaltPMgrSCC            = 2,  /* can stop SCC clock */
  2002.      gestaltPMgrSound          = 3,  /* can shut off sound circuits */
  2003.      gestaltPMgrDispatchExists = 4}; /* dispatch routines are present */
  2004.  
  2005.      NOTE:
  2006.      Bit 4 seen set on Power Mac codenamed Catalyst with System 7.5.2.
  2007.      This is because some desktop machines support the Power Manager for
  2008.      things like Energy Star compliance. (Two anonymous contributors)
  2009.  
  2010. ppc  (System [7.0])
  2011.      gestaltPPCToolboxAttr
  2012.      Returns information about the capabilities of the PPC Toolbox as
  2013.      bit masks.
  2014.  
  2015.      enum {
  2016.      #define gestaltPPCToolboxAttr 'ppc '  /* PPC Toolbox attributes */
  2017.      gestaltPPCToolboxPresent          = 0x0000,  /* Requires PPCInit to */
  2018.                                                   /*  be called */
  2019.      gestaltPPCSupportsIncoming        = 0x0001,  /* Deny incoming net */
  2020.                                                   /*  requests */
  2021.      gestaltPPCSupportsOutGoing        = 0x0002,  /* Deny outgoing net */
  2022.                                                   /*  requests */
  2023.      gestaltPPCSupportsRealTime        = 0x1000,  /* Supports real-time */
  2024.                                                   /*  delivery */
  2025.      gestaltPPCSupportsStoreAndForward = 0x2000,  /* Supports store and */
  2026.                                                   /*  forward delivery */
  2027.      gestaltPPCSupportsDontCare        = 0x4000}; /* Supports specifi- */
  2028.                                                   /*  cation of Don't */
  2029.                                                   /*  care */
  2030.  
  2031.      NOTE:
  2032.      The first thing that is confusing is that, unlike other selectors
  2033.      returning attributes, the responses are not bit values, but bit masks.
  2034.      This means you simply AND the value with the response to test the bit.
  2035.      The second thing that is confusing is how to interpret
  2036.           gestaltPPCToolboxPresent = 0x0000.
  2037.      What this means is that if the PPC toolbox is present, but has not
  2038.      been initialised (by calling PPCInit), then gestaltPPCToolboxAttr
  2039.      returns 0x0000. In reality, PPCInit gets called by the Process
  2040.      Manager before any applications get launched, so no applications will
  2041.      actually see this response. (Dave Radcliffe)
  2042.  
  2043. proc (System [6.0.4])
  2044.      gestaltProcessorType
  2045.      Returns a value that indicates the type of processor that is
  2046.      currently running (or emulated on Power Macs or under MAE).
  2047.  
  2048.      enum {
  2049.      #define gestaltProcessorType 'proc' /* processor type */
  2050.      gestalt68000 = 1,  /* MC68000 */
  2051.      gestalt68010 = 2,  /* MC68010 */
  2052.      gestalt68020 = 3,  /* MC68020 */
  2053.      gestalt68030 = 4,  /* MC68030 */
  2054.      gestalt68040 = 5}; /* MC68040 &S01 */
  2055.  
  2056.      NOTES:
  2057.      The 68LC040 responds as type gestalt68040 but doesn't have a FPU. The
  2058.      user can swap out the 68LC040 and put in a real 68040 with FPU, so
  2059.      just checking the machineType or the processorType isn't enough.
  2060.      (Dave Radcliffe)
  2061.  
  2062.      Has there been a 68EC030 processor??? I assume it returns
  2063.      gestalt68030 but doesn't have an MMU. (Rene Ros)
  2064.  
  2065.      On a Power Macintosh the Gestalt function returns, although a 68LC040
  2066.      is emulated, the value gestalt68020. This return value is intended to
  2067.      highlight the two ways in which the 68LC040 Emulator more closely
  2068.      resembles a 68020 processor than a 68040 processor. &AD11
  2069.  
  2070. prpv (PowerTalk ext [1.0?], part of PowerTalk)
  2071.      gestaltSDPPromptVersion
  2072.      Returns the SDP Prompt version as INTEGER. Returns zero if not
  2073.      present and available.
  2074.  
  2075.      #define gestaltSDPPromptVersion 'prpv' /* SDP Prompt version */
  2076.  
  2077. prty (System [6.0.4])
  2078.      gestaltParityAttr
  2079.      Returns information about the parity-checking abilities of the
  2080.      machine.
  2081.  
  2082.      enum {
  2083.      #define gestaltParityAttr 'prty' /* parity attributes */
  2084.      gestaltHasParityCapability = 0,
  2085.      gestaltParityEnabled       = 1};
  2086.  
  2087. pwky (System Update enbl [7.5 upd 2.0])
  2088.      gestaltPowerKeyAddr?
  2089.      Returns a pointer to a routine of type
  2090.  
  2091.      typedef pascal OSErr (*PwrKeyProc)(short item, short action);
  2092.  
  2093.      to enable/disable the PowerKey and/or Shutdown Alert.
  2094.  
  2095.      #define gestaltPowerKeyAddr? 'pwky'
  2096.  
  2097.      NOTE:
  2098.      See TechNote 1017 (System 7.5 Update 2.0 / System 7.5.3) for more
  2099.      detailed information.
  2100.  
  2101. qd   (System [6.0.4])
  2102.      gestaltQuickdrawVersion
  2103.      Returns the version of QuickDraw currently present as 2-byte value.
  2104.  
  2105.      enum {
  2106.      #define gestaltQuickdrawVersion 'qd  ' /* QuickDraw version */
  2107.      gestaltOriginalQD  = 0x000,
  2108.      gestaltOriginalQD1 = 0x001,
  2109.      gestalt8BitQD      = 0x100,
  2110.      gestalt32BitQD     = 0x200,
  2111.      gestalt32BitQD11   = 0x210,
  2112.      gestalt32BitQD12   = 0x220,
  2113.      gestalt32BitQD13   = 0x230,
  2114.      gestalt32BitQD135? = 0x235,  /* with System 7.1.2, ROM = 3072K? */
  2115.      gestalt32BitQD139? = 0x239,  /* with System 7.5.1 on Power Macs */
  2116.                                   /*  &AT12 */
  2117.      gestalt32BitQD141? = 0x241}; /* with System 7.5.2 */
  2118.  
  2119.      ======================================================================
  2120.      Possible Combinations of ROM Versions and System Software Versions
  2121.      ======================================================================
  2122.      ROM Class             System Version         Gestalt Value
  2123.      ----------------------------------------------------------------------
  2124.      Black-and-white class <  7.0                 gestaltOriginalQD
  2125.      (ROM < 256K)          >= 7.0                 gestaltOriginalQD and
  2126.                                              gestaltSystemVersion >= 0x0700
  2127.  
  2128.      Color QD class        <  7.0, no INITs       gestalt8BitQD
  2129.      (ROM = 256K)          6.0.3/6.0.4 and        gestalt32BitQD
  2130.                            32-Bit QD INIT 1.0
  2131.                            6.0.5-6.0.8 and        gestalt32BitQD12
  2132.                            32-Bit QD INIT 1.2
  2133.                            >= 7.0                 gestalt32BitQD13
  2134.  
  2135.      ci class              6.0.4                  gestalt32BitQD + 1
  2136.      (256K < ROM >= 3072K) 6.0.5-6.0.8            gestalt32BitQD12
  2137.                            >= 7.0                 gestalt32BitQD13
  2138.      SuperROM?             7.1.2-7.5?             gestalt32BitQD135?
  2139.      (ROM = 3072K)         7.5.1?                 gestalt32BitQD139?
  2140.                            7.5.2?                 gestalt32BitQD141?
  2141.      ----------------------------------------------------------------------
  2142.      (Original source: D e v e l o p 14, June 1993, p. 56;
  2143.       Info on System 7.1.2 and later based on observations and technical
  2144.       notes.)
  2145.  
  2146.      NOTE:
  2147.      gestalt32BitQD11 is never returned and gestalt32BitQD + 1 means
  2148.      0x0201 as response value and doesn't has a constant defined.
  2149.      Another QuickDraw version is System 7 with a black-and-white class
  2150.      machine.
  2151.  
  2152.      Color QuickDraw is only available on 68020 and greater CPUs, and
  2153.      this selector always returns gestaltOriginalQD on 68000 machines,
  2154.      even when running System 7. &AT11
  2155.  
  2156. qdrw (System [7.0])
  2157.      gestaltQuickDrawFeatures &S01
  2158.      Returns information about QuickDraw.
  2159.  
  2160.      enum {
  2161.      #define gestaltQuickDrawFeatures 'qdrw'     /* QuickDraw attributes */
  2162.      #define gestaltQuickDrawFeaturesAttr 'qdrw' /* used in some headers */
  2163.      gestaltHasColor          = 0,
  2164.      gestaltHasDeepGWorlds    = 1,
  2165.      gestaltHasDirectPixMaps  = 2,
  2166.      gestaltHasGrayishTextOr  = 3,
  2167.      gestaltSupportsMirroring = 4}; /* &AD12 */
  2168.  
  2169.      NOTES:
  2170.      There is a bug in the 'qdrw' selector that causes it to report that
  2171.      Color QuickDraw is always present, even on machines that don't support
  2172.      it. Apple has acknowledged this bug on AppleLink. (Chris Wysocki)
  2173.      Use SysEnvirons instead or test for the QD version ('qd  ') being
  2174.      8-bit QD or later.
  2175.  
  2176. qtim (QuickTime ext [1.0])
  2177.      gestaltQuickTime
  2178.      gestaltQuickTimeVersion
  2179.      Returns QuickTime version as NumVersion.
  2180.  
  2181.      #define gestaltQuickTime 'qtim' /* Movie Toolbox Availability */
  2182.      #define gestaltQuickTimeVersion 'qtim' /* Movie Toolbox version */
  2183.  
  2184.      NOTES:
  2185.      The returned version is obtained from 'vers' resource ID# 1.
  2186.  
  2187.      Initially the name 'gestaltQuickTime' was used to test for the
  2188.      availability of QuickTime. The fact that is always returned a
  2189.      version number was not documented until later. Then the name
  2190.      'gestaltQuickTimeVersion' was defined. (Rene Ros)
  2191.  
  2192.      See 'Reports' chapter (QuickTime section) for more information.
  2193.  
  2194. qtrs (QuickTime PowerPlug ext [1.0?])
  2195.      gestaltQuickTimeFeatures &AS06
  2196.  
  2197.      enum {
  2198.      #define gestaltQuickTimeFeatures 'qtrs' /* QT Features attributes */
  2199.      gestaltPPCQuickTimeLibPresent = 0}; /* PowerPC QT glue library is */
  2200.                                          /*  present */
  2201.  
  2202.      NOTE:
  2203.      The gestaltPPCQuickTimeLibPresent bit indicates that the native
  2204.      QuickTime interface library is available and can be called by native
  2205.      PowerPC applications. (Dave Radcliffe)
  2206.      See for more info Technical Note
  2207.      'QT 01 - Inside Macintosh: QuickTime Addendum'.
  2208.  
  2209. ram  (System [6.0.4])
  2210.      gestaltPhysicalRAMSize
  2211.      Returns the number of bytes of the physical RAM currently installed.
  2212.  
  2213.      #define gestaltPhysicalRAMSize 'ram ' /* physical RAM */
  2214.  
  2215. rbv  (System [6.0.4, discontinued?]) &AS04
  2216.      gestaltRBVAddr
  2217.      Returns the address of the RBV.
  2218.  
  2219.      #define gestaltRBVAddr 'rbv ' /* RBV address */
  2220.  
  2221. reno (Apple Guide ext [1.2?], part of System 7.5 and later)
  2222.      ???
  2223.      Indicates presence "of the Reno system extension." (Reno is the
  2224.      mechanism behind Apple Guide for managing the help data-bases?)
  2225.  
  2226. rmbg (System [7.5.2])
  2227.      kResourceBugFixesAttrs
  2228.      Returns information to determine both the presence of the native
  2229.      Resource Manager and the ordering of resources returned by the
  2230.      GetIndType and Get1IndType. &AT13
  2231.  
  2232.      enum {
  2233.      kGestaltRMNativePowerPC?             = 0,
  2234.      kGestaltRM???                        = 1
  2235.      kGestaltRMTypeIndexOrderingReverse   = 2,  /* reverse ordering */
  2236.      kGestaltRMTypeIndexOrderingUndefined = 3}; /* ordering information */
  2237.                                                 /*  unavailable */
  2238.  
  2239. rom  (System [6.0.4]) INF
  2240.      gestaltROMSize
  2241.      Returns the size of the installed ROM in bytes.
  2242.  
  2243.      #define gestaltROMSize 'rom ' /* ROM size */
  2244.  
  2245.      NOTE:
  2246.      On Power Macintosh computers this selector returns the ROM size minus
  2247.      the 68K emulator portion, which uses about 1 MB. &AD18
  2248.  
  2249. romv (System [6.0.4]) INF
  2250.      gestaltROMVersion
  2251.      Returns the version number of the installed ROM.
  2252.  
  2253.      #define gestaltROMVersion 'romv' /* ROM version */
  2254.  
  2255. rsrc (System [should work since 7.0?])
  2256.      gestaltResourceMgrAttr
  2257.      Returns information about the Resource Manager.
  2258.  
  2259.      enum {
  2260.      #define gestaltResourceMgrAttr 'rsrc' /* Resource Mgr attributes */
  2261.      gestaltPartialRsrcs       = 0,
  2262.      gestaltResourceOverrides? = 1}; /* resource map overrides? */
  2263.  
  2264.      NOTE:
  2265.      Under System 7, bit 0 that tells if you have partial resource support
  2266.      doesn't work right. The selector is undefined under System 7.0 and
  2267.      7.0.1 even though the partial resource calls are available. This has
  2268.      been acknowledged by Apple. (Michael Hecht, Quinn)
  2269.  
  2270. rtmr (System? [7.1.1?])
  2271.      gestaltRealtimeMgrAttr
  2272.      Returns information about the Realtime Manager.
  2273.  
  2274.      enum {
  2275.      #define gestaltRealtimeMgrAttr 'rtmr' /* Realtime Mgr attributes */
  2276.      gestaltRealtimeMgrPresent = 0}; /* Realtime Mgr is present */
  2277.  
  2278.      NOTE:
  2279.      If the RealTime Mgr is present this means the ARTA routines are
  2280.      available to determine if and how many DSPs are installed.
  2281.      (Zalman Stern)
  2282.  
  2283. sccr (System [6.0.4, discontinued]) &AS04
  2284.      gestaltSCCReadAddr
  2285.      Returns the address of SCC read ports.
  2286.  
  2287.      #define gestaltSCCReadAddr 'sccr' /* SCC read ports address */
  2288.  
  2289. sccw (System [6.0.4, discontinued]) &AS04
  2290.      gestaltSCCWriteAddr
  2291.      Returns the address of SCC write ports.
  2292.  
  2293.      #define gestaltSCCWriteAddr 'sccw' /* SCC write ports address */
  2294.  
  2295. scr# (System [6.0.4])
  2296.      gestaltScriptCount
  2297.      Returns the number of script systems currently active.
  2298.  
  2299.      #define gestaltScriptCount 'scr#' /* number of active scripts */
  2300.  
  2301. scra (Macintosh Easy Open cp [1.0]) &AD03
  2302.      gestaltScrapMgrAttr
  2303.      Returns information about the Scrap Manager.
  2304.  
  2305.      enum {
  2306.      #define gestaltScrapMgrAttr 'scra'; /* Scrap Mgr attributes */
  2307.      gestaltScrapMgrTranslationAware = 0};
  2308.  
  2309. scri (System [6.0.4])
  2310.      gestaltScriptMgrVersion
  2311.      Returns the version number of the Script Manager as BCD.
  2312.  
  2313.      #define gestaltScriptMgrVersion 'scri' /* Script Mgr version */
  2314.  
  2315.      ======================================================================
  2316.      Version numbers for the Script Manager
  2317.      ======================================================================
  2318.      System Version       Script Mgr           Script Mgr          Version
  2319.                           (older ROMs)+        (newer ROMs)        format
  2320.      ----------------------------------------------------------------------
  2321.      6.0.3 and earlier    <= 0x20F             N.A.                binary
  2322.      6.0.4 Roman          0x211                0x215                  "
  2323.      6.0.4 non-Roman      0x212                0x216                  "
  2324.      6.0.5                0x213                0x217 (=2.23)          "
  2325.  
  2326.      6.0.7                0x230                0x231                BCD
  2327.      J-6.0.7.1            0x230                0x231                 "
  2328.      6.0.8                0x230                0x231                 "
  2329.      6.1 non-Roman        0x240                0x241                 "
  2330.      7.0                  0x700                0x700                 "
  2331.      7.0.1 Roman          0x701                0x701                 "
  2332.      7.0.1 non-Roman      0x701                0x701                 "
  2333.      7.1                  0x710                0x710                 "
  2334.      7.5                  0x720                0x720                 "
  2335.      7.5.1/7.5.2/7.5.3    0x750                0x750                 "
  2336.  
  2337.      + Plus,SE,II,IIx,IIcx,SE/30,Classic
  2338.      ----------------------------------------------------------------------
  2339.      (Original source: Inside Macintosh Text, p. 6-9;
  2340.       Info on System 7.5 and later based on observations.)
  2341.  
  2342. scsi (System [7.1.2?])
  2343.      (SCSI Manager ext [4.3])
  2344.      gestaltSCSI &AT07
  2345.      Returns information about the SCSI Manager.
  2346.  
  2347.      enum {
  2348.      #define gestaltSCSI 'scsi' /* SCSI Manager attributes */
  2349.      gestaltAsyncSCSI      = 0,  /* Supports asynchronous SCSI */
  2350.      gestaltAsyncSCSIINROM = 1,  /* Async SCSI is in ROM (available for */
  2351.                                  /*  booting) */
  2352.      gestaltSCSISlotBoot   = 2}; /* ROM supports Slot-style PRAM for */
  2353.                                  /*  SCSI boots */
  2354. sdev (Control Strip cp [1.0])
  2355.      gestaltControlStripAttr
  2356.      Returns information about the Control Strip software.
  2357.  
  2358.      enum {
  2359.      #define gestaltControlStripAttr 'sdev'
  2360.      gestaltControlStripExists       = 0, /* TRUE = control strip is */
  2361.                                           /*   installed */
  2362.      gestaltControlStripVersionFixed = 1, /* version of Control Strip */
  2363.                                           /*  installs 'csvr' selector */
  2364.                                           /*  instead of 'sdvr' &AS11 */
  2365.      gestaltControlStripUserFont     = 2, /* supports user-selectable */
  2366.                                           /*  font/size &AS20 */
  2367.      gestaltControlStripUserHotKey   = 3};/* support user-selectable hot */
  2368.                                           /*  key to show/hide the */
  2369.                                           /*  window &AS20 */
  2370.  
  2371.      NOTE:
  2372.      A file 'IsControlStrip.c' included with the Apple Guide Authoring Kit
  2373.      defines this selector as:
  2374.        #define gestaltStatusBarAttr 'sdev'
  2375.        #define gestaltStatusBarExists 0
  2376.      (Rene Ros)
  2377.  
  2378. sdvr (PowerTalk ext [1.0?], part of PowerTalk)
  2379.      gestaltSDPStandardDirectoryVersion
  2380.      Returns the SDP Standard Directory version as INTEGER. Returns zero if
  2381.      not present and available.
  2382.  
  2383.      #define gestaltSDPStandardDirectoryVersion 'sdvr'
  2384.                                        /* SDP Standard Directory version */
  2385.  
  2386.      WARNING:
  2387.      The same selector code is used by the Control Strip 1.0 control panel.
  2388.      See the gestaltControlStripVersion ('csvr') selector entry above.
  2389.  
  2390. ser  (System [6.0.8?])
  2391.      gestaltSerialAttr
  2392.      Returns information about the serial hardware of the machine.
  2393.  
  2394.      enum {
  2395.      #define gestaltSerialAttr 'ser ' /* serial hardware attributes */
  2396.      gestaltGPIaToDCDa  = 0,
  2397.      gestaltGPIaToRTxCa = 1,
  2398.      gestaltGPIaToDCDb  = 2};
  2399.  
  2400. slmp (Shared Library Manager? ext [2.0])
  2401.      (System? [7.5.2?)
  2402.      gestaltASLMPPC &AS17
  2403.  
  2404.      NOTE:
  2405.      See the gestaltASLM68K ('aslm') entry for more information.
  2406.  
  2407. slot (System [6.0.4, 6.0.5, discontinued])
  2408.      gestaltSlotAttr
  2409.      Returns information about the Slot Manager.
  2410.  
  2411.      enum {
  2412.      #define gestaltSlotAttr 'slot' /* Slot Mgr attributes */
  2413.      gestaltSlotMgrExists       = 0,
  2414.      gestaltNuBusPresent        = 1,
  2415.      gestaltSESlotPresent       = 2,
  2416.      gestaltSE30SlotPresent     = 3,
  2417.      gestaltPortableSlotPresent = 4};
  2418.  
  2419. slt1 (System [6.0.4, 6.0.5, discontinued])
  2420.      gestaltFirstSlotNumber
  2421.      Returns first slot number.
  2422.  
  2423.      #define gestaltFirstSlotNumber 'slt1' /* First Slot number */
  2424.  
  2425. sltc (System [6.0.8?])
  2426.      gestaltNuBusConnectors
  2427.      Returns information about the NuBus slot connector locations. The
  2428.      value returned is a bitmap. If bits 9 to E are set, there are six
  2429.      slots present with locations 9 to E.
  2430.  
  2431.      #define gestaltNuBusConnectors 'sltc' /* NuBus connector bitmap */
  2432.  
  2433.      NOTE:
  2434.      This selector does not return information about the PDS slot (with
  2435.      or without NuBus adapter). Also, it is unknown if this selector also
  2436.      includes slot 0x8 which was added with the Power Macintosh 8100/110.
  2437.      (John Mancino)
  2438.  
  2439. snd  (System [6.0.4])
  2440.      gestaltSoundAttr
  2441.      Returns information about the sound capabilities of the machine.
  2442.  
  2443.      enum {
  2444.      #define gestaltSoundAttr 'snd '   /* sound attributes */
  2445.      gestaltStereoCapability    =  0,  /* can play stereo sounds */
  2446.      gestaltStereoMixing        =  1,  /* mixes channels into single */
  2447.                                        /*  signal */
  2448.      gestaltSoundReserved       =  2,  /* Sound Manager 3.1? QT uses new */
  2449.                                        /*  Sound Mgr calls? */
  2450.      gestaltSoundIOMgrPresent   =  3,  /* new sound input routines avail.*/
  2451.      gestaltBuiltInSoundInput   =  4,  /* built-in sound input device  */
  2452.                                        /*  available */
  2453.      gestaltHasSoundInputDevice =  5,  /* some sound input device avail. */
  2454.      gestaltPlayAndRecord       =  6,  /* built-in hardware can play and */
  2455.                                        /*  record simultaneously */
  2456.                                        /*  &AS03/AS04 */
  2457.      gestalt16BitSoundIO        =  7,  /* sound hardware can play and */
  2458.                                        /*  record 16-bit samples &AS04 */
  2459.      gestaltStereoInput         =  8,  /* sound hardware can record */
  2460.                                        /*  stereo &AS04 */
  2461.      gestaltLineLevelInput      =  9,  /* sound input port requires line */
  2462.                                        /*  level &AS04 */
  2463.      /* the following bits are not defined prior to Sound Mgr 3.0 */
  2464.      gestaltSndPlayDoubleBuffer = 10,  /* play from disk available &AS04 */
  2465.      gestaltMultiChannels       = 11,  /* multiple channel support */
  2466.                                        /*  &AS03/AS04 */
  2467.      gestalt16BitAudioSupport   = 12}; /* 16 bit audio data supported */
  2468.                                        /*  &AS04 */
  2469.  
  2470.      NOTES:
  2471.      Bit 7 through 12 are not defined for versions of the Sound Manager
  2472.      prior to version 3.0.
  2473.  
  2474.      With the Enhanced Sound Manager (version 2) you have both multi-
  2475.      channel and play-from-disk capability if the Apple Sound Chip is
  2476.      available. But the gestaltSndPlayDoubleBuffer and gestaltMultiChannels
  2477.      bits are not set. Test for the gestaltHasASC bit of the
  2478.      gestaltHardwareAttr selector. &AD06/AD20
  2479.      A later Technical Note retracts this info, and says it is not safe to
  2480.      assume both functions if the gestaltHasASC bit is set with the
  2481.      gestaltHardwareAttr selector! &AT01
  2482.  
  2483. snhw (System [7.5])
  2484.      (Sound Manager ext [3.0])
  2485.      gestaltSoundHardware
  2486.      Returns type of hardware used for sound?
  2487.  
  2488.      #define gestaltSoundHardware 'snhw' /* Sound Hardware */
  2489.      #define gestaltASC           'asc ' /* ASC */
  2490.      #define gestaltAwacs?        'awac' /* returned on PowerMac */
  2491.      #define gestaltGCAwacs?      'awgc' /* returned on PM 7200, PM 8500 */
  2492.                                          /*  and PM 9500 with System */
  2493.                                          /*  7.5.2*/ 
  2494.      #define gestaltClassicSound  'clas' /* Classic Mac? */
  2495.      #define gestaltDSP           'dsp ' /* DSP */
  2496.      #define gestaltSinger?       'sing' /* returned on PB 540c */
  2497.      #define gestaltSinger2?      'sng2' /* returned on PB 190cs and */
  2498.                                          /*  PB 5300 */
  2499.      #define gestaltWhitney?      'whit' /* returned on Performa 5300 */
  2500.  
  2501.      NOTE:
  2502.      The SoundComponents.h header file from ETO #18 lists the following
  2503.      values, possibly also return values for this selector? (Anonymous)
  2504.  
  2505.      kClassicSubType  'clas' /* classic hardware, i.e. Mac Plus */
  2506.      kASCSubType      'asc ' /* Apple Sound Chip device */
  2507.      kDSPSubType      'dsp ' /* DSP device */
  2508.      kAwacsSubType    'awac' /* Another of Will's Audio Chips device*/
  2509.      kGCAwacsSubType  'awgc' /* Awacs audio with Grand Central DMA */
  2510.      kSingerSubType   'sing' /* Singer (via Whitney) based sound */
  2511.      kSinger2SubType  'sng2' /* Singer 2 (via Whitney) for Acme */
  2512.  
  2513. spsl (PowerTalk ext [1.0?], part of PowerTalk)
  2514.      gestaltSMPSPSendLetterVersion
  2515.      Returns the SMP SendLetter version as INTEGER. Returns zero if not
  2516.      present and available.
  2517.  
  2518.      #define gestaltSMPSPSendLetterVersion 'spsl' /* SMP Sendletter */
  2519.                                                   /*  version */
  2520.  
  2521. stdf (System [7.0])
  2522.      (Macintosh Easy Open cp [1.0?])
  2523.      gestaltStandardFileAttr
  2524.      Returns information about the Standard File Package.
  2525.  
  2526.      enum {
  2527.      #define gestaltStandardFileAttr 'stdf' /* Standard File attr. */
  2528.      gestaltStandardFile58               = 0, /* StandardPutFile, */
  2529.                                               /*  StandardGetFile, */
  2530.                                               /*  CustomPutFile and */
  2531.                                               /*  CustomGetFile are */
  2532.                                               /*  available. */
  2533.      gestaltStandardFileTranslationAware = 1, /* &AD03/AS04 */
  2534.      gestaltStandardFileHasColorIcons    = 2, /* &AD03/AS04/AS05 */
  2535.      gestaltStandardFileUseGenericIcons  = 3, /* force the LDEF to use  */
  2536.                                               /*  only the system */
  2537.                                               /*  generic icons &AT06 */
  2538.      gestaltStandardFileHasDynamicVolumeAllocation = 4};
  2539.                                               /* supports more than 20 */
  2540.                                               /*  volumes &AT06 */
  2541.  
  2542. sysa (System [7.1.2?]) &AS04
  2543.      gestaltSysArchitecture
  2544.      Returns one of the following values, indicating the type of
  2545.      architecture on which the application is currently running.
  2546.  
  2547.      enum {
  2548.      #define gestaltSysArchitecture 'sysa' /* System Architecture type */
  2549.      gestalt68k     = 1,
  2550.      gestaltPowerPC = 2};
  2551.  
  2552. sysu (System Update enbl [7.5 upd 2.0s3]) INF?
  2553.      gestaltSystemUpdateVersion? &AS22
  2554.      Returns the System Update version as NumVersion.
  2555.  
  2556.      #define gestaltSystemUpdateVersion 'sysu'
  2557.  
  2558.      NOTE: System 7.5.3 Revision 2 returns 2.0.3 for this selector.
  2559.  
  2560. sysv (System [6.0.4]) INF
  2561.      gestaltSystemVersion
  2562.      Returns the version number of the currently active System file as BCD.
  2563.  
  2564.      #define gestaltSystemVersion 'sysv'  /* System file version */
  2565.  
  2566.      NOTES:
  2567.      In addition KanjiTalk 6.0.7 (Japanese System) and other non-Roman
  2568.      versions return 0x0606. See the 'osyv' selector.
  2569.      System J-6.0.7.1 returns 0x0609
  2570.  
  2571.      System 6.0.8 returns 0x0607 because only the printer drivers were
  2572.      added. You can't determine if it is actually 6.0.8 in another way.
  2573.  
  2574.      There are some system versions (like International System 6.0.8.1 or
  2575.      7.0.1.1) which just return the normal version number, i.e. 6.0.8 and
  2576.      7.0.1.
  2577.  
  2578.      System 7.1.2 (for Power Macintosh) apparently returns an incorrect
  2579.      version number (0x0710) when in 68K mode with a PPC Upgrade card.
  2580.      (Rick Gansler)
  2581.  
  2582.      System 7.5 Update 1.0 makes this selector return 0x751. (Anonymous)
  2583.  
  2584.      To determine the system update version, use the 'sysu' selector.
  2585.  
  2586. Apple System Software (T-Z)
  2587. ===========================
  2588. This chapter lists selector codes of which the meaning is documented and
  2589. the first character of the selector code is in the T-Z range.
  2590.  
  2591. tabl (System [6.0.4])
  2592.      gestaltSelectorTable?
  2593.      Returns a handle to the Gestalt selector table itself.
  2594.  
  2595.      #define gestaltSelectorTable? 'tabl' /* Gestalt Table address */
  2596.  
  2597.      WARNING:
  2598.      Although this information isn't officially confirmed, it is probably
  2599.      correct. But it is likely to go away in future systems.
  2600.  
  2601.      NOTE:
  2602.      The Gestalt selector table is kept in a resizable block in the system
  2603.      heap. The last item in the table is a dummy entry (INVALID), marked by
  2604.      a selector OSType(MaxLongInt). (Marco Piovanelli, he also has some
  2605.      snippet Pascal code to list all selectors)
  2606.      With System 7.5 each item in the table now contains three parts:
  2607.      the selector, an information field and a field with either a pointer
  2608.      or a value. If the information field (or only bit 0) is 1, a value is
  2609.      stored, otherwise a pointer to the gestalt function. (Eric-Paul Rebel)
  2610.      For backward compatibility this selector probably now points to a
  2611.      second table using the old format. (Rene Ros)
  2612.  
  2613. tbtt (System [6.0.8])
  2614.      gestaltToolboxTable
  2615.      Returns the base address of the Toolbox trap table.
  2616.  
  2617.      #define gestaltToolboxTable 'tbtt' /* Toolbox trap table base */
  2618.  
  2619. te   (System [6.0.5])
  2620.      gestaltTextEditVersion
  2621.      Returns a value that indicates which version of TextEdit is present.
  2622.  
  2623.      enum {
  2624.      #define gestaltTextEditVersion 'te  ' /* TextEdit version number */
  2625.      gestaltTE1 = 1,  /* TextEdit in MacIIci ROM */
  2626.      gestaltTE2 = 2,  /* TextEdit with 6.0.4 Script Systems on MacIIci */
  2627.                       /*  (Script bug fixes for MacIIci) */
  2628.      gestaltTE3 = 3,  /* TextEdit with 6.0.4 Script Systems all but */
  2629.                       /*  MacIIci */
  2630.      gestaltTE4 = 4,  /* TextEdit in System 7.0 */
  2631.      gestaltTE5 = 5,  /* TextWidthHook available in TextEdit */
  2632.      gestaltTE6 = 6}; /* TextEdit in System 8.0 &AS20 */
  2633.  
  2634.      ======================================================================
  2635.      Version numbers for TextEdit
  2636.      ======================================================================
  2637.      Returned value       New Features           System software   Hardware
  2638.      ----------------------------------------------------------------------
  2639.      gestaltUndefSelector Multistyled TE         before 6.0.4      all
  2640.      gestaltTE1                                  6.0.4 Roman       IIci
  2641.      gestaltTE2           New width              6.0.4 non-Roman   IIci
  2642.                           measurement hook
  2643.                           Script Mgr compatible
  2644.      gestaltTE3                                  6.0.4 non-Roman   non-IIci
  2645.      gestaltTE4           TEFeatureFlag          6.0.5             all
  2646.      gestaltTE5           Text width             7.0               all
  2647.                           measurement hook
  2648.      gestaltTE6           ???                    8.0               all?
  2649.      ----------------------------------------------------------------------
  2650.      (Original source: Inside Macintosh Text, p.2-23)
  2651.  
  2652.      NOTE:
  2653.      The inline input features (also in TextEdit version 5) are also
  2654.      available with System 6.0.7 using non-Roman script systems, but there
  2655.      is no Gestalt constant that indicates this availability. &AD19
  2656.  
  2657. teat (Macintosh Drag and Drop ext [1.0])
  2658.      gestaltTEAttr &AD05
  2659.      Returns information about the functions and capabilities of TextEdit.
  2660.  
  2661.      enum {
  2662.      gestaltTEAttr 'teat' /* TextEdit attributes */
  2663.      gestaltTEHasGetHiliteRgn     = 0,  /* TEGetHiliteRgn present */
  2664.      gestaltTESupportsInlineInput = 1,  /* TextEdit does Inline Input */
  2665.                                         /*  &AS20 */
  2666.      gestaltTESupportsTextObjects = 2}; /* TextEdit does Text Objects */
  2667.                                         /*  &AS20 */
  2668.  
  2669. tele (System [7.5])
  2670.      (Telephone Manager Extension ext [2.0?], part of Apple Telecom)
  2671.      gestaltTelephoneMgrAttr?
  2672.      Returns information about the Telephone Mgr.
  2673.  
  2674.      enum {
  2675.      #define gestaltTeleMgrAttr 'tele'
  2676.      gestaltTeleMgrPresent          = 0,
  2677.      gestaltTeleMgrPowerPCSupport   = 1,
  2678.      /* below installed by Telephone Mgr 2.0? &AD21 */
  2679.      gestaltTeleMgrSoundStreams     = 2,
  2680.      gestaltTeleMgrAutoAnswer       = 3,
  2681.      gestaltTeleMgrIndHandset       = 4,
  2682.      gestaltTeleMgrSilenceDetect    = 5,
  2683.      gestaltTeleMgrNewTELNewSupport = 6};
  2684.  
  2685. term (System [7.1])
  2686.      gestaltTermMgrAttr
  2687.      Returns information about the Terminal Manager.
  2688.  
  2689.      enum {
  2690.      #define gestaltTermMgrAttr 'term' /* Terminal Mgr attributes */
  2691.      gestaltTermMgrPresent     = 0,  /* Terminal Mgr is present */
  2692.      gestaltTermMgrErrorString = 2}; /* &AS04 */
  2693.  
  2694. thds (Thread Manager ext [1.1]) &AD04
  2695.      (QuickDraw GX ext [1.0?])
  2696.      (System [7.1.2?])
  2697.      gestaltThreadAttr
  2698.      Returns information about the Thread Manager.
  2699.  
  2700.      enum {
  2701.      #define gestaltThreadAttr 'thds'   /* Thread Manager attributes */
  2702.      gestaltThreadsPresent        = 0,  /* bit true if Threads present */
  2703.      gestaltSpecificMatchSupport  = 1,  /* bit true if 'exact match' API */
  2704.                                         /* supported */
  2705.      gestaltThreadsLibraryPresent = 2,  /* bit true if ThreadsLib is */
  2706.                                         /* present */
  2707.      gestaltSchedulerFix?         = 3,    /* preemptive scheduler fix */
  2708.                                         /* present? */
  2709.      gestalt???                   = 4}; /* unknown, System 7.5.1 */
  2710.  
  2711.      NOTES:
  2712.      IM OS Utilities lists this selector as 'gestaltThreadMgrAttr'.
  2713.  
  2714.      For unknown reasons, the gestaltThreadsLibraryPresent bit is not set when
  2715.      running under PPC-native mode, on KanjiTalk (Japanese) System 7.5.
  2716.      (Laurent Humbert)
  2717.  
  2718. tmgr (System [6.0.4])
  2719.      gestaltTimeMgrVersion
  2720.      Returns a value that indicates the version of the Time Manager.
  2721.  
  2722.      enum {
  2723.      #define gestaltTimeMgrVersion 'tmgr' /* Time Mgr version */
  2724.      gestaltStandardTimeMgr = 1,  /* Standard Time Mgr */
  2725.      gestaltRevisedTimeMgr  = 2,  /* Revised Time Mgr */
  2726.      gestaltExtendedTimeMgr = 3}; /* Extended Time Mgr */
  2727.  
  2728. tpad (System? [7.5?] on PowerBook 520/540?)
  2729.      Indicates precense of a trackpad? As such used in the 'IsTrackPad.c'
  2730.      file included with the Apple Guide Authoring Kit.
  2731.  
  2732. tsma (System? [???])
  2733.      gestaltTSMgrAttr &AS14
  2734.      Returns information about the Text Services Manager.
  2735.  
  2736.      enum {
  2737.      #define gestaltTSMgrAttr 'tsma' /* Text Services Mgr attributes */
  2738.      gestaltTSMDisplayMgrAwareBit = 0,  /* TSM knows about Display Mgr */
  2739.      gestaltTSMdoesTSMTEBit       = 1}; /* TSM has integrated TSMTE &AS20 */
  2740.  
  2741. tsmv (System [7.1])
  2742.      gestaltTSMgrVersion &AT05
  2743.      Returns Text Services Manager version in BCD.
  2744.  
  2745.      enum {
  2746.      #define gestaltTSMgrVersion 'tsmv' /*Text Services Mgr version */
  2747.      gestaltTSMgr2 = 0x200}; /* &AS20 */
  2748.  
  2749. tv   (System? [???])
  2750.      (Video Startup ext [1.0], part of European Video Installer)
  2751.      gestaltTVAttr &AS14
  2752.      Returns information about the TV capabilities?
  2753.  
  2754.      enum {
  2755.      #define gestaltTVAttr 'tv  ' /* TV Version [huh? ed.] */
  2756.      gestaltHasTVTuner            = 0,  /* supports Philips FL1236F */
  2757.                                         /*  video tuner */
  2758.      gestaltHasSoundFader         = 1,  /* supports Philips TEA6330 */
  2759.                                         /*  Sound Fader chip */
  2760.      gestaltHasHWClosedCaptioning = 2,  /* supports Philips SAA5252 */
  2761.                                         /*  Closed Captioning */
  2762.      gestaltHasIRRemote           = 3,  /* supports CyclopsII Infra Red */
  2763.                                         /*  Remote Control */
  2764.      gestaltHasVidDecoderScaler   = 4,  /* supports Philips SAA7194 */
  2765.                                         /*  Video Decoder/Scaler */
  2766.      gestaltHasStereoDecoder      = 5,  /* supports Sony SBX1637A-01 */
  2767.                                         /*  stereo decoder */
  2768.      gestaltHasSerialFader        = 6,  /* has fader audio in serial */
  2769.                                         /*  with system audio &AS22 */
  2770.      gestaltHasFMTuner            = 7}; /* has FM Tuner from donnybrook */
  2771.                                         /*  card &AS22 */
  2772.  
  2773.      NOTE:
  2774.      A Power Macintosh 6100/66 with AV card and System 7.5.1 had both bit
  2775.      3 and 4 set. A Quadra 605, LC475, PM 6100/60, Performa 5200 (all with
  2776.      System 7.5.x) only had bit 3 set. Where is the remote control, then?
  2777.      Selector not installed on Quadra 700 and PB Duo 210 (also System
  2778.      7.5.1 & 7.5upd2). (John Tsombakos, Rene Ros)
  2779.      An LC630 didn't had bit 5 set, while it is supposed to have a stereo
  2780.      decoder. (Eric-Paul Rebel)
  2781.  
  2782. ufox (Foreign File Access ext [4.0], part of Apple CD-ROM Software) &AT03
  2783.      gestaltForeignFileAccessVersion?
  2784.      Returns Foreign File Access version in BCD.
  2785.  
  2786.      #define gestaltForeignFileAccessVersion? 'ufox';
  2787.                                           /* Foreign File Access version */
  2788.  
  2789.      NOTE: The returned version is obtained from 'vers' resource ID# 1.
  2790.  
  2791. vers (System [6.0.4])
  2792.      gestaltVersion
  2793.      Returns the version of Gestalt as INTEGER.
  2794.  
  2795.      enum {
  2796.      #define gestaltVersion 'vers'     /* Gestalt version */
  2797.      gestaltValueImplementedVers = 5}; /* Version implementing */
  2798.                                        /*  GestaltValue &AD21 */
  2799.  
  2800.      NOTE:
  2801.      Usually version 1 is present. On machines with ROM version 1917
  2802.      (Quadra 840AV, PowerMacs etc.) version 4 is present.
  2803.      Version 5 is installed by System 7.5 adding support for the
  2804.      GestaltValue calls. And version 6 is installed by System 7.5.1.
  2805.      (Rene Ros, Anonymous)
  2806.  
  2807. via1 (System [6.0.4, discontinued])
  2808.      gestaltVIA1Addr
  2809.      Returns the address of VIA 1.
  2810.  
  2811.      #define gestaltVIA1Addr 'via1' /* VIA 1 address */
  2812.  
  2813.      NOTE:
  2814.      At least on a Performa 450 (LC III) this selector and 'via2' exists for
  2815.      a short moment, until they are removed (by the system?).
  2816.      (Anthony DeRobertis)
  2817.  
  2818. via2 (System [6.0.4, discontinued])
  2819.      gestaltVIA2Addr
  2820.      Returns the address of VIA 2.
  2821.  
  2822.      #define gestaltVIA2Addr 'via2' /* VIA 2 address */
  2823.  
  2824.      NOTE:
  2825.      At least on a Performa 450 (LC III) this selector and 'via1' exists for
  2826.      a short moment, until they are removed (by the system?).
  2827.      (Anthony DeRobertis)
  2828.  
  2829. vm   (System [6.0.4])
  2830.      gestaltVMAttr
  2831.      Returns information about virtual memory.
  2832.  
  2833.      enum {
  2834.      #define gestaltVMAttr 'vm  '
  2835.      gestaltVMPresent      = 0,  /* set; virtual memory present */
  2836.      gestaltVMNotInstalled = 0}; /* clear; virtual memory not present */
  2837.  
  2838.      NOTE:
  2839.      Starting with Copland (System 8?) VM is always on but this selector
  2840.      will tell VM is off. A future selector allows to test if the
  2841.      microkernel is running and thus if VM is actually used. &AD10/AD22
  2842.  
  2843. wind (System [Copland?])
  2844.      gestaltWindowMgrAttr &AD21
  2845.      Returns information about the Window Manager.
  2846.  
  2847.      enum {
  2848.      #define gestaltWindowMgrAttr  'wind'
  2849.      kSystemEightWindowMgr      = 0,
  2850.      kSystemEightWindowsVersion = 8,
  2851.      kLatestWindowsVersion      = 8};
  2852.  
  2853.      WARNING:
  2854.      From the Preliminary Copland Headers. May change in the future.
  2855.  
  2856.      NOTE:
  2857.      The constants indicate Copland may be called System 8. Also, is
  2858.      it 'Window Manager' or 'WindowS Manager'? :-) (Rene Ros)
  2859.  
  2860. wma. (System [7.0])
  2861.      (Responder ext [2.0?])
  2862.      gestaltResponderAttr
  2863.      Returns information about the Workstation Management Agent a.k.a.
  2864.      Responder.
  2865.  
  2866.      enum {
  2867.      #define gestaltResponderAttr 'wma.' /* Responder attributes */
  2868.      gestaltResponderPresent = 0}; /* Responder is present */
  2869.  
  2870. xlat (Macintosh Easy Open cp [1.0]) &AD03
  2871.      gestaltTranslationAttr
  2872.      Returns information about the Translation Manager.
  2873.  
  2874.      enum {
  2875.      #define gestaltTranslationAttr 'xlat' /* Translation Mgr attrib. */
  2876.      gestaltTranslationMgrExists       = 0,  /* TM present */
  2877.      gestaltTranslationMgrHintOrder    = 1,  /* TRUE if hint order */
  2878.                                              /*  reversal bug is fixed */
  2879.      gestaltTranslationPPCAvail        = 2,  /* PPC Lib. available */
  2880.      gestaltTranslationGetPathAPIAvail = 3,  /* GetFileTranslationPath & */
  2881.                                              /*  GetPathTranslationDialog*/
  2882.                                              /*  available */
  2883.      gestalt???                        = 4}; /* by MEO 1.1 and later */
  2884.  
  2885. xttt (System [6.0.8])
  2886.      gestaltExtToolboxTable
  2887.      Returns the base address of the second half of the Toolbox trap table
  2888.      if the table is discontiguous. If the table is contiguous, this
  2889.      selector returns zero. &AD19
  2890.  
  2891.      #define gestaltExtToolboxTable 'xttt' /* Extended Toolbox trap table*/
  2892.  
  2893.      NOTE:
  2894.      This selector may be installed but returns gestaltUnknownErr instead
  2895.      of zero when the table is contiguous? (Rene Ros)
  2896.  
  2897. Apple Additional Software
  2898. =========================
  2899. This chapter lists selector codes of which the meaning is documented and
  2900. are installed by additional, non-system software, software from Apple.
  2901.  
  2902. arb  (PortShare Pro ? cp [1.2?] by Stalker Software)
  2903.      (Serial Port Arbitrator ext [1.0], part of Apple Remote Access)
  2904.      gestaltArbitorAttr &AD02
  2905.      Returns information about the Serial Port Arbitration.
  2906.  
  2907.      enum {
  2908.      #define gestaltArbitorAttr 'arb '    /* Serial Port Arbitration */
  2909.                                           /*  attributes */
  2910.      gestaltSerialArbitrationExists = 0}; /* Serial Port Arbitration */
  2911.                                           /*  installed */
  2912.  
  2913. calb (OpenDoc? [???])
  2914.      gestaltCALibVersion
  2915.      Returns the version of the CA Library as BCD?
  2916.  
  2917.      #define gestaltCALibVersion 'calb';
  2918.      #define CALIB_VERSION_1 ((short)0x0100)
  2919.  
  2920. cltn (QuickDraw GX [1.0])
  2921.      gestaltCollectionMgrVersion
  2922.      Returns the version of the Collection Manager as NumVersion.
  2923.  
  2924.      #define gestaltCollectionMgrVersion 'cltn' /* Collection Mgr version*/
  2925.  
  2926.      NOTE:
  2927.      The Collection Manager is a set of routines for maintaining tagged
  2928.      collections of data; GX uses it to support the "tags" that you can
  2929.      attach to GX objects, for holding special data, including
  2930.      user-defined data. (Lawrence D'Oliveiro)
  2931.  
  2932. gc24 (8*24 GC cp [???])
  2933.      gestaltGC24? &M07
  2934.      Returns the version of the 8*24 GC software for the Macintosh
  2935.      Display Card 8*24 GC as BCD?
  2936.  
  2937.      #define gestaltGC24? 'gc24'
  2938.  
  2939.      NOTE:
  2940.      This selector is also installed when no card is available. A value
  2941.      returned when no card is installed is 0xFFFF D8EB.
  2942.  
  2943. gfxa (QuickDraw GX [1.0])
  2944.      gestaltGraphicsAttr
  2945.      Returns information about the Graphics.
  2946.  
  2947.      enum {
  2948.      #define gestaltGraphicsAttr 'gfxa' /* graphics attributes bits  */
  2949.      gestaltGraphicsIsDebugging = 0x0001,
  2950.      gestaltGraphicsIsLoaded    = 0x0002,
  2951.      gestaltGraphicsIsPowerPC   = 0x0004};
  2952.  
  2953.      NOTE: Not bit values but bit masks? Use AND?
  2954.  
  2955. grfx (QuickDraw GX ext [1.0])
  2956.      gestaltGraphicsVersion
  2957.      Returns the version of the Graphics as ???.
  2958.  
  2959.      enum {
  2960.      #define gestaltGraphicsVersion 'grfx' /* Gestalt version selector */
  2961.      gestaltCurrentGraphicsVersion = 0x00010000}; /* supposed value */
  2962.                                                   /*  returned */
  2963.  
  2964. kids (At Ease [1.0])
  2965.      kAtEaseGestalt
  2966.      Returns a handle to a structure holding information about At Ease.
  2967.  
  2968.      The following code was published by Apple &AT06:
  2969.  
  2970.      #define kAtEaseGestalt    'kids'
  2971.      typedef struct {
  2972.        short  giVersion;         /* structure version */
  2973.        short  giIsActive;        /* true if at ease is currently running */
  2974.        short  giAutoCreateAlias; /* if true then auto create alias */
  2975.        short  giRequestFloppy;   /* if true then request floppy on new
  2976.                                     saves */
  2977.        short  giStacksAreApps;   /* if true then HyperCard stacks are shown
  2978.                                     with applications */
  2979.        FSSpec giItemsLocation;   /* location of the At Ease Items folder */
  2980.        /* more version 2 fields??? */
  2981.      } GestaltRec, *GestaltRecPtr, **GestaltRecHand;
  2982.  
  2983. mess (QuickDraw GX [1.0])
  2984.      gestaltMessageMgrVersion
  2985.      Returns the version of the Message Manager as ???.
  2986.  
  2987.      #define gestaltMessageMgrVersion 'mess' /* Message Mgr version */
  2988.  
  2989.      NOTE:
  2990.      The Message Manager is an implementation of object-oriented-style
  2991.      message passing within an inheritance hierarchy, that can be used from
  2992.      non-OO languages.
  2993.      It is used by the GX printing system, to allow the customization of
  2994.      printing behaviour by letting applications (and developers of printing
  2995.      extensions) intercept messages sent to the printer driver.
  2996.      (Lawrence D'Oliveiro)
  2997.  
  2998. mtlk (QuickTime Conferencing ext? [1.0?])
  2999.      gestaltQuickTimeConferencing
  3000.      Returns the version of QuickTime Conferencing as NumVersion.
  3001.  
  3002.      #define gestaltQuickTimeConferencing 'mtlk'
  3003.  
  3004.      NOTE:
  3005.      For compatibiity reasons the gestaltQuickTimeConferencing ('mtlk')
  3006.      selector will remain to return 0x01028000.
  3007.      The gestaltQuickTimeConferencingInfo ('qtci') selector will return the
  3008.      proper version number and string. &AT15
  3009.  
  3010.      See also the gestaltQuickTimeConferencingInfo ('qtci') selector.
  3011.  
  3012. mtv2 (Video Player app [???])
  3013.      (Video Startup ext [1.0], part of European Video Installer)
  3014.      gestaltTV &AD16
  3015.      "Indicates whether the Video Player app is present."
  3016.  
  3017. pmgr (QuickDraw GX [1.0])
  3018.      gestaltGXPrintingMgrVersion
  3019.      Returns the version of the QuickDraw GX Printing Manager as ???.
  3020.  
  3021.      #define gestaltGXPrintingMgrVersion 'pmgr' /* QD GX Printing Mgr */
  3022.                                                 /*  version */
  3023.  
  3024.      NOTE:
  3025.      The QuickDraw GX documentation lists this selector incorrectly as
  3026.      'gestaltPrintingMgrVersion'. (Ken Prehoda)
  3027.  
  3028. q3v  (QuickDraw 3D ext? [1.0.2])
  3029.      gestaltQD3DVersion &AD30
  3030.      Returns the version of QuickDraw 3D as a Double BCD.
  3031.  
  3032.      #define gestaltQD3DVersion 'q3v '
  3033.  
  3034.      NOTE:
  3035.      Selector was not defined with documentation, but version 1.0.3 was
  3036.      seen to install this selector with a response value similair to
  3037.      its version.
  3038.  
  3039. q3vc (QuickDraw 3D ??? [???])
  3040.      gestaltQD3DViewer
  3041.      Returns information about the QuickDraw 3D Viewer.
  3042.  
  3043.      enum {
  3044.      #define gestaltQD3DViewer 'q3vc'
  3045.      gestaltQD3DViewerNotPresent = 0,
  3046.      gestaltQD3DViewerAvailable  = 1};
  3047.  
  3048. qd3d (QuickDraw 3D ext? [1.0?])
  3049.      gestaltQD3D
  3050.      Returns if QuickDraw 3D is installed or not (no attribute bits?).
  3051.  
  3052.      enum {
  3053.      #define gestaltQD3D 'qd3d'
  3054.      gestaltQD3DNotPresent = 0,
  3055.      gestaltQD3DAvailable  = 1};
  3056.  
  3057.      NOTE:
  3058.      Is there a bug with the selector function for QD 3D 1.0b1c5? Whenever
  3059.      the 'qd3d' selector is used on a PM 6100/66 (System 7.5.1) crashes
  3060.      with a 'PowerPC illegal instruction'. This is when using the Gestalt
  3061.      dcmd in Macsbug or any of the Gestalt utilities.
  3062.      (found by John Mancino and Rene Ros)
  3063.  
  3064. qdgx (QuickDraw GX [1.0])
  3065.      gestaltGXVersion
  3066.      Returns the version of QuickDraw GX as ???.
  3067.  
  3068.      #define gestaltGXVersion 'qdgx' /* QuickDraw GX version */
  3069.  
  3070.      NOTE:
  3071.      Both the values 0x0100 8000 and 0x0001 0001 were observed.
  3072.  
  3073. qtci (QuickTime Conferencing ext? [1.0.3])
  3074.      gestaltQuickTimeConferencingInfo &AT15
  3075.      Returns pointer to QuickTime Conferencing information, a structure:
  3076.  
  3077.      struct QTCGestaltInfo {
  3078.      long QTCversion; /* standard binary version - i.e. 0x01044007 
  3079.                           means "1.0.4a7" */
  3080.      char QTCversionString[20]; /* this is a pascal string, followed
  3081.                                     by a zero char */
  3082.      };
  3083.  
  3084.      #define gestaltQuickTimeConferencingInfo 'qtci'
  3085.  
  3086.      WARNING:
  3087.      Do not modify or dispose of the pointer to this structure - treat it
  3088.      as read-only information.
  3089.  
  3090.      NOTE:
  3091.      For compatibiity reasons the gestaltQuickTimeConferencing ('mtlk')
  3092.      selector will remain to return 0x01028000.
  3093.      The gestaltQuickTimeConferencingInfo ('qtci') selector will return the
  3094.      proper version number and string. &AT15
  3095.  
  3096.      If the Gestalt selector points at a zero version number and empty
  3097.      string, it means that some QTC-related extension has already loaded,
  3098.      but QTC itself is not installed or has not yet loaded.
  3099.      The QTCversionString is a Pascal string. Since there's a zero
  3100.      character after it, however, you can add one byte to the address and
  3101.      use it as a C string. &AT15
  3102.      
  3103.      See also the gestaltQuickTimeConferencing ('mtlk') selector.
  3104.  
  3105. srad (System? [7.5.3?])
  3106.      (System 7.5 Update enbl [2.0])
  3107.      gestaltSoftwareVendorCode &AS22
  3108.      Returns system software vendor information.
  3109.  
  3110.      #define gestaltSoftwareVendorCode 'srad'
  3111.      #define gestaltSoftwareVendorApple 'Appl'    /* System software */
  3112.                                                   /*  sold by Apple */
  3113.      #define gestaltSoftwareVendorLicensee 'Lcns' /* System software */
  3114.                                                   /*  sold by licensee */
  3115.  
  3116.      NOTE: See also the 'hrad' selector in this section.
  3117.  
  3118. srta (Speech Recognition ext [1.2.1?])
  3119.      gestaltSpeechRecognitionAttr
  3120.      Returns information about the Speech Recognition Manager.
  3121.  
  3122.      enum {
  3123.      #define gestaltSpeechRecognitionAttr 'srta'
  3124.      gestaltDesktopSpeechRecognition   = 1L << 0,  /* Recognition using mic. */
  3125.      gestaltTelephoneSpeechRecognition = 1L << 1}; /* FUTURE */
  3126.  
  3127.      NOTE:
  3128.      The Speech Recognition (1.2.1) only works on AV and PPC Macs, but the
  3129.      selector is installed on all machines and the response value will
  3130.      indicate the speech recognition is available. (Rene Ros)
  3131.  
  3132. srtb (Speech Recognition ext [1.2.1?])
  3133.      gestaltSpeechRecognitionVersion
  3134.      Returns the version of the Speech Recognition Manager as BCD.
  3135.  
  3136.      #define gestaltSpeechRecognitionVersion 'srtb'
  3137.  
  3138.      NOTE:
  3139.      The Speech Recognition (1.2.1) only works on AV and PPC Macs, but the
  3140.      selector is installed on all machines and its presence will indicate
  3141.      the speech recognition is available. (Rene Ros)
  3142.  
  3143. strm (Remote Access Aliases ext [1.0], part of Apple Remote Access)
  3144.      gestaltRemoteAccessAttr &AD02
  3145.  
  3146.      enum {
  3147.      #define gestaltRemoteAccessAttr 'strm' /* Remote Access attributes */
  3148.      gestaltRemoteAccessExists   = 0,  /* ARA Connection Interface is */
  3149.                                        /*  available */
  3150.      gestaltRemoteAccessCallOnly = 1,  /* checks for ARA client &AD15 */
  3151.      gestaltRemoteAccessMPServer = 2,  /* checks for ARA multi-port */
  3152.                                        /*  server &AD15 */
  3153.      gestaltRemoteAccessVers2    = 3,  /* checks for ARA 2.0 features */
  3154.                                        /*  &AD15 */
  3155.      gestaltRemoteAccessVers21?  = 4}; /* installed by ARA Personal */
  3156.                                        /*  Server 2.1
  3157.  
  3158. tmTE (Inline Extension ext [1.0], part of KanjiTalk7)
  3159.      gestaltTSMTEAttr &AS07
  3160.      Returns information about the Text Services Manager for TextEdit.
  3161.  
  3162.      enum {
  3163.      #define gestaltTSMTEAttr 'tmTE' /* TSM for TE attributes */
  3164.      gestaltTSMTEPresent = 0,                   /* TSM for TE is present */
  3165.      gestaltTSMTE        = gestaltTSMTEPresent};/* old name */
  3166.  
  3167. tmTV (Inline Extension ext [1.0], part of KanjiTalk7)
  3168.      gestaltTSMTEVersion &AS07
  3169.      Returns the version of the Text Services Manager for TextEdit as BCD.
  3170.  
  3171.      enum {
  3172.      #define gestaltTSMTEVersion 'tmTV' /* TSM for TE version */
  3173.      gestaltTSMTE1 = 0x100,  /* TSM for TE version 1.0 */
  3174.      gestaltTSMTE2 = 0x200}; /* TSM for TE version 2.0 &AS20 */
  3175.  
  3176. trip (WalkInit ext [1.0?])
  3177.      gestaltWalkaboutAttr
  3178.      Returns information about the Walkabout (codename?) extension.
  3179.      (Anonymous)
  3180.  
  3181.      enum{
  3182.      #define gestaltWalkaboutAttr = 'trip'
  3183.      gestaltWalkaboutPresent = 0};
  3184.  
  3185.      NOTE: See also the gestaltWalkaboutVers ('walk') selector.
  3186.  
  3187. ttsc (Text-To-Speech Manager ext [1.0?])
  3188.      gestaltSpeechAttr
  3189.      Returns information about the Speech Manager.
  3190.  
  3191.      enum {
  3192.      #define gestaltSpeechAttr 'ttsc' /* Text-To-Speech Manager attrib. */
  3193.      gestaltSpeechMgrPresent = 0,  /* bit true if Speech Mgr present */
  3194.      gestaltSpeechHasPPCGlue = 1}; /* Speech Mgr has native PPC glue */
  3195.  
  3196.      NOTE:
  3197.      With System 7.5.1 on a PowerBook Duo 210 this selector had both
  3198.      bits set indicating the PPC Glue is available, while it is not.
  3199.      (Rene Ros)
  3200.  
  3201. unic (System [Copland?])
  3202.      (UnicodeConverter.FAT ext [1.0?])
  3203.      gestaltUnicodeAttr &AD21
  3204.      Returns information about Unicode.
  3205.  
  3206.      enum {
  3207.      #define gestaltUnicodeAttr 'unic'
  3208.      gestaltUnicodeConverterPresent = 0,
  3209.      gestaltUnicodeConverterMask   = 1L << gestaltUnicodeConverterPresent};
  3210.  
  3211.      NOTE:
  3212.      The Preliminary Copland headers defined a 'gestaltUnicodeFeatures'
  3213.      constant which is now replaced by 'gestaltUnicodeAttr'.
  3214.  
  3215. walk (WalkInit ext [1.0?])
  3216.      gestaltWalkaboutVers
  3217.      Returns the version of the Walkabout (codename?) extension as BCD.
  3218.      (Anonymous)
  3219.  
  3220.      #define gestaltWalkaboutVers 'walk'
  3221.  
  3222. ws 1 (WorldScript I ext [7.1?])
  3223.      gestaltWorldScriptIVersion?
  3224.      Returns version of WorldScript I software as BCD.
  3225.  
  3226.      #define gestaltWorldScriptIVersion? 'ws 1'
  3227.  
  3228. XTND (??? [???])
  3229.      gestaltXTNDAttr &AS10
  3230.      Returns information about XTND Manager?
  3231.  
  3232.      enum {
  3233.      #define gestaltXTNDAttr 'XTND'
  3234.      gestaltPPCXTNDPresent = 1};
  3235.  
  3236.      NOTE:
  3237.      Is used in some code to check if XTND engine is present. However it is
  3238.      unknown when it is installed, so supposedly it is meant for future
  3239.      use. Like a built-in XTND engine in the System Software? When the
  3240.      selector is installed all operations are dispatched through trap
  3241.      _XTNDMgr (0xABF4) otherwise the library provides the code.
  3242.      (Marco Piovanelli)
  3243.  
  3244. Third Parties Software
  3245. ======================
  3246. This chapter lists selector codes of which the meaning is known or
  3247. documented and are installed by Third Parties software.
  3248.  
  3249. !SYM (Symbionts ext [1.0] by B. Kevin Hardman)
  3250.      gestaltSymbiontsTable
  3251.      Returns a pointer to a structure containing the size of the System
  3252.      Heap before and after loading the INITs.
  3253.  
  3254.      #define gestaltSymbiontsTable '!SYM' /* Symbionts address */
  3255.  
  3256. ADfd (AfterDark [2.0?] by Berkeley Systems, Inc.)
  3257.      gestaltAfterDarkFolder &M05
  3258.      Returns a pointer to a procedure that gives the DirID and vRefNum of
  3259.      the 'After Dark Files' folder.
  3260.  
  3261.      #define gestaltAfterDarkFolder 'ADfd'
  3262.  
  3263.      NOTE:
  3264.      See for more information the AfterDark Gestalt header file. It
  3265.      is available by sending email to
  3266.      gestalt-selectors-list-request@bio.vu.nl using the command
  3267.      'archive get src/AfterDarkGestalt.h'
  3268.      Or by emailing to Berkeley Systems Mac Tech Support at
  3269.      brklysystm@aol.com and ask them for the AfterDarkGestalt.h file.
  3270.  
  3271. ADrk (AfterDark [2.0] by Berkeley Systems, Inc.)
  3272.      gestaltAfterDarkAttr &M05
  3273.      Returns a longword bitmask containing public information about
  3274.      After Dark.
  3275.  
  3276.      enum {
  3277.      gestaltAfterDarkAttr = 'ADrk'; /* After Dark states */
  3278.      eSystemIQActive      = 0,  /* SystemIQ activity monitor active */
  3279.      eSoundActive         = 1,  /* AD has allocated a sound channel */
  3280.      eADAcquiringPassword = 2}; /* After Dark has its password dialog up */
  3281.  
  3282.      NOTE:
  3283.      See for more information the AfterDark Gestalt header file. It
  3284.      is available by sending email to
  3285.      gestalt-selectors-list-request@bio.vu.nl using the command
  3286.      'archive get src/AfterDarkGestalt.h'
  3287.      Or by emailing to Berkeley Systems Mac Tech Support at
  3288.      brklysystm@aol.com and ask them for the AfterDarkGestalt.h file.
  3289.  
  3290. AlaC (A La Carte ext [1.1?] by Denali Software Development)
  3291.      gestaltALaCarte?
  3292.      Returns the address of the A La Carte INIT global data. The structure
  3293.      of the data is proprietary.  The existence of the 'AlaC' selector
  3294.      indicates that the A La Carte INIT is loaded.
  3295.  
  3296.      #define gestaltALaCarte? 'AlaC'
  3297.  
  3298. ApoL (Apollo ext [1.0] by Jeremy Roussak)
  3299.      gestaltApolloTable
  3300.      Returns a handle to an instance of a structure.
  3301.  
  3302.      #define gestaltApolloTable 'ApoL' /* Apollo address */
  3303.  
  3304.      NOTE:
  3305.      See for more information the Programmers' Information chapter in the
  3306.      Apollo documentation. (Jeremy Roussak)
  3307.  
  3308. ASHI (Arashi app [???] by Juri Munkki)
  3309.      ???
  3310.      Returns information about the presence of Arashi by returning one (1)
  3311.      if loaded, and zero (0) when removed.
  3312.  
  3313. AuBu (AutoBuild ext [1.0] by Rene G.A. Ros)
  3314.      gestaltAutoBuildVersion
  3315.      Returns the version of AutoBuild as NumVersion.
  3316.  
  3317.      #define gestaltAutoBuildVersion 'AuBu' /* AutoBuild version */
  3318.  
  3319.      NOTE: The returned version is obtained from 'vers' resource ID# 1.
  3320.  
  3321. BBlk (Basic Black cp [1.3], by Mason L. Bliss)
  3322.      gestaltBasicBlackAddr
  3323.      Returns the address of Basic Black's patch globals.
  3324.  
  3325.      #define gestaltBasicBlackAddr 'BBlk' /* Basic Black address */
  3326.  
  3327.      NOTE:
  3328.      See documentation included with Basic Black for more information.
  3329.  
  3330. BIFF (QM Biff ext [1.0] by Patrick C. Beard)
  3331.      ???
  3332.      Determines if there is mail (QuickMail). The response long word is 1
  3333.      if you have mail, and 0 if you don't.
  3334.  
  3335. Cafe (Coffee Break appl [1.0] by Thomas Reed)
  3336.      gestaltCoffeeBreakAddr?
  3337.      Returns a pointer to a code resource owned by Coffee Break.
  3338.      Details are private.
  3339.  
  3340.      #define gestaltCoffeeBreakAddr? 'Cafe'
  3341.  
  3342. CHSR (ChooserUser cp [1.0b4] by Flux Software)
  3343.      Returned response is private.
  3344.  
  3345. CKI3 (AETracker cp [3.0] by C.K. Haun)
  3346.      kAETrackerGestalt
  3347.      This selector returns a pointer to the external interface routine for
  3348.      AETracker, details of which are in the AETracker interface guide.
  3349.      (C.K. Haun)
  3350.  
  3351.      #define kAETrackerGestalt 'CKI3' /* AETracker address */
  3352.  
  3353. CsWT (Desktop Strip cp [1.0b1] by Sigurdur Asgeirsson)
  3354.      gestaltDesktopStripAttr?
  3355.      Returns information about the installed Desktop Strip software.
  3356.  
  3357.      enum {
  3358.      #define gestaltDesktopStripAttr? 'CsWT'
  3359.      gestaltDesktopStripPresent? = 0};
  3360.  
  3361. dBgP (DBugR cp [1.0?] by Alessandro Levi Montalcini)
  3362.      ???
  3363.      Returns a pointer to a data structure with the preferences,
  3364.      identical to the data in the PREF resource, for which a template
  3365.      is included.
  3366.  
  3367.      NOTE: The d is actually the option-d character (0xB6).
  3368.  
  3369. EagL (Eagle ext [1.4], part of Apollo 1.1 by Jeremy Roussak)
  3370.      gestaltEagleAttr?
  3371.      Returns information about the state of the Eagle background
  3372.      application.
  3373.  
  3374.      enum {
  3375.      #define gestaltEagleAttr? 'EagL' /* Eagle attributes */
  3376.      gestaltEaglePPCReady? = 0};      /* Eagle can accept next PPC */
  3377.  
  3378. FmtD (SD Extension ext [???] by Yano Electric Co.,Ltd.)
  3379.      Returned response is unknown or private. (Anonymous)
  3380.  
  3381.      NOTE:
  3382.      Extension is included with the driver software for the hard disk and
  3383.      magneto optical disk drive products of Yano Electric Co.,Ltd..
  3384.  
  3385. FPUE (SoftwareFPU cp [3.0?] by John Neil & Associates) &M06
  3386.      gestaltSoftwareFPUAddr?
  3387.      Detects presence of SoftwareFPU.
  3388.      If the result of the Gestalt call is noErr, then SoftwareFPU is
  3389.      installed, and the 68881 FPU reported by the gestaltFPUType selector
  3390.      is an emulated FPU. The value returned in the response is private and
  3391.      should be ignored.
  3392.  
  3393.      #define gestaltSoftwareFPUAddr? 'FPUE'
  3394.  
  3395. FrcP (Decor cp [1.0] by Francois Pottier)
  3396.      gestaltDecorAddr
  3397.      Returns a pointer to a structure which can be read or changed, and
  3398.      enables programmers to change the picture on the desktop.
  3399.  
  3400.      #define gestaltDecorAddr 'FrcP' /* Decor address */
  3401.  
  3402.      NOTES:
  3403.      See for more information on how to use this structure the
  3404.      documentation included with Decor 1.0 or later.
  3405.  
  3406.      The c is actually the option-c character (0x8D).
  3407.  
  3408. Frs1 (MegaDial cp [1.0] by Cypress Research)
  3409.      gestaltMegaDialAttr?
  3410.      Returns private information about MegaDial.
  3411.  
  3412.      #define gestaltMegaDialAttr? 'Frs1'
  3413.  
  3414. FrsH (MegaDial cp [1.0] by Cypress Research)
  3415.      gestaltMegaDialAddr?
  3416.      Returns a pointer to a private function.
  3417.  
  3418.      #define gestaltMegaDialAddr? 'FrsH'
  3419.  
  3420. FWRT (FullWrite app [2.0] by Akimbo Systems)
  3421.      gestaltFullWriteInfo
  3422.      Returns a handle to a FullWrite callbacks data structure when
  3423.      FullWrite is currently running. If it is not running 0 (zero) is
  3424.      returned.
  3425.  
  3426.      #define gestaltFullWriteInfo 'FWRT'
  3427.  
  3428.      NOTE:
  3429.      See for more information the FullWrite Extension SDK (For more
  3430.      information contact Akimbo Systems by email at FullWrite@akimbo.com)
  3431.  
  3432. Gast (Gestalt! appl [2.9.2] by Roland Mansson)
  3433.      gestaltGestaltVersion
  3434.      Returns the version of the application as NumVersion.
  3435.      GestaltValue is removed when application quits. Just for fun.
  3436.      (Roland Mansson)
  3437.  
  3438.      #define gestaltGestaltVersion 'Gast' /* Gestalt! version */
  3439.  
  3440.      NOTE: The a is actually the option-u/a character (0x8A).
  3441.  
  3442. Gldl (Glidel ext [2.5] by Gilles Berkovitch]
  3443.      gestaltGlidel?
  3444.      Presence indicates the succesfull installation of the extension.
  3445.  
  3446.      #define gestaltGlidel? 'Gldl'
  3447.  
  3448. GTLK (GestaltTalk code by Brigham Stevens, Apple Computer DTS)
  3449.      ???
  3450.      Snippet code, see documentation.
  3451.  
  3452. GWat (GestaltWatch ext [1.0] by Scot Bronson)
  3453.      ???
  3454.      Returns pointer to structure where collected information is stored.
  3455.  
  3456.      NOTE: In development, not yet available.
  3457.  
  3458. HETE (HErbedTEe ext [1.0] by Nevin Liber, Sector Scan Software)
  3459.      Returns a pointer to private data.
  3460.  
  3461. ICTE (ICeTEe ext [1.1], part of Internet Config
  3462.                         by Quinn "The Eskimo!" and Peter N. Lewis)
  3463.      gestaltInternetConfigTEAddr?
  3464.      Returns the address of a record which is documented in the
  3465.      IC Programmer's Kit.
  3466.  
  3467.      #define gestaltInternetConfigTEAddr? 'ICTE'
  3468.  
  3469. idle (IdleTime INIT [1.0] by UserLand Software)
  3470.      gestaltIdleTime?
  3471.      Returns the number of clock ticks since the last keystroke, disk
  3472.      insertion,  mouse movement or mouse click.
  3473.  
  3474.      #define gestaltIdleTime? 'idle'
  3475.  
  3476. IF 8 (Speak Note cp [???] by Glenn R. Howes)
  3477.      gestaltSpeechNoteAttr?
  3478.      Returns information about the installed copy of Speak Note.
  3479.  
  3480.      enum {
  3481.      #define gestaltSpeechNoteAttr? 'IF 8'
  3482.      gestaltSpeechNoteAvailable = 0};
  3483.  
  3484. InMn (InternetMemory cp [1.0] by CircleDream Software)
  3485.      gestaltInternetMemory
  3486.      Returns information still private, until after the first release.
  3487.  
  3488.      #define gestaltInternetMemory 'InMn'
  3489.  
  3490. JMBe (SLIP Extension ? [???] part of MacSLIP by Hyde Park Software)
  3491.      (Traceroute Ethernet LAP extension [1.0] by Jim Browne)
  3492.      gestalt???
  3493.      Returns the address of a structure as documented in the header file
  3494.      'RawIP.h' to allow application programs to perform Raw IP writes and
  3495.      filter all incoming IP packets.
  3496.  
  3497.      #define gestalt??? 'JMBe'
  3498.  
  3499. Kals (Alias Assistant cp [TrashAlias 1.0] formerly TrashAlias,
  3500.                                           by Flux Software)
  3501.      Returned response is private.
  3502.  
  3503. Lnch (Network Time cp [2.0] by Pete Resnick)
  3504.      (First Launch Gestalt INIT code resource, by Pete Resnick)
  3505.      gestaltFirstLaunchAttr
  3506.      Returns info on whether the _Launch trap has been called by the
  3507.      System.
  3508.  
  3509.      enum {
  3510.      #define gestaltFirstLaunchAttr 'Lnch' /* _Launch information */
  3511.      gestaltFirstLaunchDone = 0}; /* _Launch called, INIT time over */
  3512.  
  3513.      NOTE:
  3514.      Bit 0 of the response, gestaltFirstLaunchDone, indicates whether the
  3515.      _Launch trap has been called since startup of the machine. All other
  3516.      bits are reserved and currently 0. Even if not installed at INIT time,
  3517.      Network Time will install the Gestalt selector if it is not already
  3518.      there when the control panel is opened and automatically set
  3519.      bit 0 to 1.
  3520.      68000 assembler source code is available for the INIT that installs
  3521.      the selector, and INIT resource -4048 from Network Time may be
  3522.      stolen (and renumbered as desired) and used in any INIT file as
  3523.      desired. (Pete Resnick)
  3524.  
  3525. MFK+ (Program Switcher ext [2.0] by Michael F. Kamprath)
  3526.      Returns a pointer to private data.
  3527.  
  3528. MFK7 (Super Saver cp [1.1.2?] by Michael F. Kamprath)
  3529.      Returned response is private.
  3530.  
  3531. MOMM (Microsoft Office Manager cp [4.2.1] part of Microsoft Office [4.2.1],
  3532.       by Microsoft Corporation)
  3533.      gestaltMSOfficeMgr
  3534.      Returns a pointer to private data.
  3535.  
  3536.      #define gestaltMSOfficeMgr 'MOMM'
  3537.  
  3538.      NOTE:
  3539.      Microsoft Office Manager is a customizable control panel allowing easy
  3540.      access to Microsoft Office apps (or any other added applications,
  3541.      files, etc), setup, and help via a new system menu. Also incorporates
  3542.      the QuickSwitch feature of Command-Tabbing through current processes.
  3543.      (Terence Worley)
  3544.  
  3545. NIPX (Novell MacIPX cp [1.0.1] by Novell Inc.)
  3546.      gestaltNovellIPXVersion
  3547.      Returns the version of MacIPX as NumVersion.
  3548.  
  3549.      #define gestaltNovellIPXVersion 'NIPX' /* MacIPX version */
  3550.  
  3551.      NOTE:
  3552.      If the selector returns an error (i.e. no such selector?) then MacIPX
  3553.      is not installed. If the selector returns 0 then MacIPX is installed
  3554.      but the driver is not open. Any other value is the version.
  3555.      (Duane Murphy)
  3556.  
  3557. NMBT (Attention cp [0.6] by Marco Piovanelli)
  3558.      gestaltAttentionAddr
  3559.      The response value returned is a pointer to a read-only parameter
  3560.      block in the system heap.
  3561.  
  3562.      #define gestaltAttentionAddr 'NMBT' /* Attention address */
  3563.  
  3564.      NOTE: See for more detailed information the included ReadMe file.
  3565.  
  3566. NTim (Network Time cp [2.0] by Pete Resnick)
  3567.      Returns information private to Network Time.
  3568.  
  3569. PNfs (FileSaver [3.0], part of Norton Utilities for Macintosh)
  3570.      Returns a private structure used by various portions of the
  3571.      Norton Utilities.
  3572.  
  3573. PPP  (PPP mdev [???], part of MacPPP by Merit Network, Inc. and the
  3574.       University of Michigan)
  3575.      gestalt???
  3576.      Returns the address of the Lap globals as documented in the header
  3577.      file 'ppp.h.source'. It's an absolutely enormous struct that contains
  3578.      among other things function pointers to let you open and close MacPPP.
  3579.      (Richard Buckle)
  3580.  
  3581.      #define gestalt??? 'PPP '
  3582.  
  3583.      NOTE:
  3584.      Source code of MacPPP is available at: ftp://merit.edu/pub/ppp/mac/
  3585.  
  3586. PWRS (PwrSwitcher cp [1.0] by David B. Lamkins)
  3587.      gestaltPwrSwitcherTable
  3588.      Returns a pointer to a private data structure (undocumented).
  3589.  
  3590.      #define gestaltPwrSwitcherTable 'PWRS' /* Power Switcher address */
  3591.  
  3592. SAVC (AfterDark cp [2.0] by Berkeley Systems, Inc.)
  3593.      (Basic Black cp [1.3.3] by Mason L. Bliss)
  3594.      (CDU cp [1.0?] by Connectix Corp.)
  3595.      (DarkSide of the Macintosh [4.0] by Tom Dowdy)
  3596.      (PixelPlay? ??? [???] by ???)
  3597.      (ScreenDaemon ??? [1.0] by Mason L. Bliss)
  3598.      (Sleeper cp [1.1.4?] by St.Clair Software)
  3599.      gestaltScreenSaverControl &M05
  3600.      Returns a pointer to a routine of type
  3601.  
  3602.      typedef pascal OSErr (*SaverControlProcPtr) (SaverCommand command);
  3603.  
  3604.      which allows controlling the screen saver.
  3605.  
  3606.      #define gestaltScreenSaverControl 'SAVC'
  3607.  
  3608.      NOTE:
  3609.      See for more information the AfterDark Gestalt header file. It
  3610.      is available by sending email to
  3611.      gestalt-selectors-list-request@bio.vu.nl using the command
  3612.      'archive get src/AfterDarkGestalt.h'
  3613.      Or by emailing to Berkeley Systems Mac Tech Support at
  3614.      brklysystm@aol.com and ask them for the AfterDarkGestalt.h file.
  3615.  
  3616. SAVR (AfterDark cp [2.0] by Berkeley Systems, Inc.)
  3617.      (Arashi app [???] by Juri Munkki)
  3618.      (Basic Black cp [1.3.3] by Mason L. Bliss)
  3619.      (CDU cp [1.0?] by Connectix Corp.)
  3620.      (Coffee Break app [1.0] by Thomas Reed)
  3621.      (DarkSide of the Macintosh [4.0] by Tom Dowdy)
  3622.      (PixelPlay? ??? [???] by ???)
  3623.      (ScreenDaemon ??? [1.0] by Mason L. Bliss)
  3624.      (Sleeper cp [1.1.4?] by St.Clair Software)
  3625.      gestaltScreenSaverAttr &M05
  3626.      Returns information about the current screen saver. Defined if a
  3627.      screen saver is installed.
  3628.  
  3629.      enum {
  3630.      #define gestaltScreenSaverAttr 'SAVR' /* Screen saver attributes */
  3631.      gestaltSaverTurnedOn      = 0,  /* saver enabled/disabled */
  3632.      gestaltSaverAsleep        = 1,  /* saver currently asleep */
  3633.      gestaltSaverDemoMode      = 2,  /* saver sleeping in demo mode */
  3634.      gestaltSaverPasswordMode  = 3,  /* saver sleeping in password- */
  3635.                                      /*  protected mode */
  3636.      gestaltAppDrawingDisabled = 4}; /* QD drawing disallowed between */
  3637.                                      /*  module animation frames */
  3638.  
  3639.      NOTE:
  3640.      See for more information the AfterDark Gestalt header file. It
  3641.      is available by sending email to
  3642.      gestalt-selectors-list-request@bio.vu.nl using the command
  3643.      'archive get src/AfterDarkGestalt.h'
  3644.      Or by emailing to Berkeley Systems Mac Tech Support at
  3645.      brklysystm@aol.com and ask them for the AfterDarkGestalt.h file.
  3646.  
  3647.      Thomas Reed wrote some source code (C) demonstrating how to install
  3648.      this selector. You can get a copy by sending email to
  3649.      gestalt-selectors-list-request@bio.vu.nl using the command
  3650.      'archive get src/gestalt-savr.txt'
  3651.  
  3652. SCom (Super Comments cp [CommentKeeper 1.0] formerly CommentKeeper,
  3653.                                             by Flux Software)
  3654.      Returned response is private.
  3655.  
  3656. SDdD (Shutdown Delay cp [2.0.1] by Alessandro Levi Montalcini)
  3657.      kSDDelayCreator
  3658.      Returns a pointer to a data structure described in the documentation
  3659.      included with Shutdown Delay.
  3660.  
  3661.      #define kSDDelayCreator 'SDdD'
  3662.  
  3663.      NOTE: The d is actually the option-shift v character (0xD7).
  3664.  
  3665. sDmn (ScreenDaemon ext [1.0] by Mason L. Bliss)
  3666.      gestaltScreenDaemonAddr
  3667.      Returns the address of ScreenDaemon's patch globals.
  3668.  
  3669.      #define gestaltScreenDaemonAddr 'sDmn' /* ScreenDaemon address */
  3670.  
  3671. SHCM (Shared Code Manager ext [1.0] by Eric Schlegel of Microsoft Corp.)
  3672.      gestalt???
  3673.      Returns a pointer to an undocumented entrypoint into the Shared Code
  3674.      Manager.
  3675.  
  3676.      #define gestalt??? 'SHCM'
  3677.  
  3678.      NOTE:
  3679.      The Shared Code Manager (1991) is a simple DLL mechanism that is
  3680.      currently used by Microsoft's Mac OLE 1.0 (Object Linking & Embedding)
  3681.      and the applications that use OLE 1.0. (Eric Schlegel)
  3682.  
  3683. SIaN (future software, checked for by ShowInitAndName code [1.0]
  3684.                        by Storm Impact, Inc.)
  3685.      gestaltShowInitAndName
  3686.      Returns the address of a routine to replace the drawing of the icon
  3687.      during startup. This is to easily implement future methods of drawing
  3688.      icons, perhaps even calling a System routine instead. &M08
  3689.  
  3690.      #define gestaltShowInitAndName 'SIaN'
  3691.  
  3692. SK3F (SmartKeys cp [3.0] by Flux Software)
  3693.      Returned response is private.
  3694.  
  3695.      NOTE:
  3696.      Versions 2.1 and earlier installed the selector 'Skey'.
  3697.  
  3698.      See also selector 'SKgc'.
  3699.  
  3700. SKey (SmartKeys cp [OneSpace INIT 1.0?-2.1] formerly OneSpace INIT,
  3701.                                             by Flux Software)
  3702.      Returned response is private.
  3703.  
  3704.      NOTE:
  3705.      Version 3.0 and later installs the selectors 'SK3F' and 'SKgc'.
  3706.  
  3707. SKgc (SmartKeys cp [3.0] by Flux Software)
  3708.      Returned response is private.
  3709.  
  3710.      NOTE:
  3711.      Versions 2.1 and earlier installed the selector 'Skey'.
  3712.  
  3713.      See also selector 'SK3F'.
  3714.  
  3715. SLip (StuffIt SpaceSaver ext [1.0?] by Aladdin Systems, Inc.)
  3716.      gestaltStuffItSpaceSaverAddr
  3717.      Returns the address of the SpaceSaver "command module" which allows
  3718.      developers to access all the functions of SpaceSaver.
  3719.      (Leonard Rosenthol)
  3720.  
  3721.      #define gestaltStuffItSpaceSaverAddr 'SLip'
  3722.  
  3723. SNIT (Snitch cp [2.0] by Mitch Jones, Nifty Neato Software)
  3724.      kSnitchINITGestaltRec
  3725.      Returns a pointer to an INITGestalt structure.
  3726.  
  3727.      #define kSnitchINITGestaltRec 'SNIT'
  3728.  
  3729.      NOTE:
  3730.      Version 1.x returns 1 if loaded.
  3731.  
  3732. SnLv (??? [???])
  3733.      kGestaltLevelMeter
  3734.      Defined in the SoundLevel.c source file, distributed with the
  3735.      SoundLevel sample code.
  3736.  
  3737.      #define kGestaltLevelMeter 'SnLv'
  3738.  
  3739. SPAL (SpeakAlert ext [1.0] by Brian Stern)
  3740.      gestaltSpeakAlert
  3741.      Details are private to SpeakAlert.
  3742.  
  3743.      #define gestaltSpeakAlert 'SPAL'
  3744.  
  3745. SWVE (SimpleWave ext [1.0b1] by Rene G.A. Ros)
  3746.      gestaltSimpleWaveTable
  3747.      Returns a pointer to an INITGestalt structure.
  3748.  
  3749.      #define gestaltSimpleWaveTable 'SWVE'
  3750.  
  3751. TExT (FileTyper Menu cp [none], part of FileTyper by Daniel Azuma)
  3752.      gestaltTyperMenuAttr
  3753.      Returns information about the FileTyper Menu's operation.
  3754.  
  3755.      enum {
  3756.      #define gestaltTyperMenuAttr 'TExT'
  3757.      gestalt??? = 0}; /* TRUE = NO item added to Finder's File menu */
  3758.  
  3759.      WARNING:
  3760.      No currently released version of FileTyper Menu (up to and including
  3761.      4.1.1) installs this selector, but future versions may. Check for the
  3762.      existence of this selector first, if you use it. (Daniel Azuma)
  3763.  
  3764. TMON (TMON Pro [3.0] by ICOM Simulations, Inc.)
  3765.      ???
  3766.      The value returned is a pointer to a Monitor information block. &M04
  3767.      (Scott Bronson)
  3768.  
  3769. Typ4 (FileTyper Menu cp [4.1.1], part of FileTyper by Daniel Azuma)
  3770.      gestaltTyperMenuPriv
  3771.      Returns private information, the existence of this selector indicates
  3772.      FileTyper Menu is installed.
  3773.  
  3774.      #define gestaltTyperMenuPriv 'Typ4'
  3775.  
  3776.      NOTE:
  3777.      Third parties can determine if FileTyper Menu is installed by
  3778.      checking for the existence of this selector. However, the actual value
  3779.      returned is private and subject to change. (Daniel Azuma)
  3780.  
  3781. UMAM (Authentication Manager cp [1.0.7] by Robert John Churchill of the
  3782.                                            University of Michigan)
  3783.      gestaltAuthManVersion
  3784.      Returns the version of the Authentication Manager as Double BCD.
  3785.  
  3786.      #define gestaltAuthManVersion 'UMAM'
  3787.  
  3788. YeHa (SpeedyFinder7 cp [1.5.4?] by Victor Tan)
  3789.      ???
  3790.      Returns a pointer to a private data structure (undocumented).
  3791.  
  3792.      NOTE:
  3793.      The structure to which the Gestalt selector refers changes almost
  3794.      invariably from version to version of SF7. Should someone work out
  3795.      parts of the structure of the selector keep in mind that it will
  3796.      almost certainly change in the next minor release and definitely with
  3797.      the next major release. (Victor Tan)
  3798.  
  3799. Unknown Apple Software
  3800. ======================
  3801. This chapter lists selector codes of which the meaning is not documented and
  3802. are installed by Apple Computer software.
  3803.  
  3804. (OSType) 7
  3805.      (System [6.0.4])
  3806.      Returns (long)'carl' (the first name of one of the two original Gestalt
  3807.      programmers?) and a result code of noErr.
  3808.  
  3809. (OSType) 13
  3810.      (System [6.0.4])
  3811.      Returns (long)'bbmc' (the initials of one of the two original Gestalt
  3812.      programmers?) and a result code of noErr.
  3813.  
  3814. 3615 (Express Modem cp [1.0], part of Express Modem Software)
  3815. a pc (PC Setup? cp [1.0?], part of Quadra 610-DOS software)
  3816. admn (AppleShare Admin appl [3.0])
  3817.      gestaltASAdminAttr?
  3818.  
  3819.      enum {
  3820.      #define gestaltASAdminAttr? 'admn'
  3821.      gestaltASAdminPresent? = 0};
  3822.  
  3823. ag_e (7.0/7.1 Apple Guide Enabler ext [???] part of Apple Guide 2.0)
  3824.      gestaltAppleGuideEnablerAttr?
  3825.      Returns information about the Apple Guide Enabler?
  3826.  
  3827.      enum {
  3828.      #define gestaltAppleGuideEnablerAttr? 'ag_e'
  3829.      gestaltAppleGuideEnablerPresent? = 0};
  3830.  
  3831. AgVU (Agent VU ext [2.0?], part of Virtual User)
  3832. aint (System? [7.1.1?])
  3833.  
  3834.      NOTES:
  3835.      Returns 2 on a C660AV and Q840AV.
  3836.  
  3837.      This selector may be installed but returns gestaltUnknownErr instead
  3838.      of zero. (Rene Ros)
  3839.  
  3840. apml (PowerTalk Manager ext [1.0?], part of PowerTalk)
  3841.      gestaltAppleMailAttr?
  3842.  
  3843.      enum {
  3844.      #define gestaltAppleMailAttr? 'apml'
  3845.      gestaltAppleMailPresent? = 0,
  3846.      gestaltAppleMail???      = 31};
  3847.  
  3848. apmo (Extension AppleTel ext [2.1.3?])
  3849.  
  3850.      NOTE: Extension name translated from Dutch.
  3851.  
  3852. asps (AppleShare Print Server appl [3.0])
  3853.      gestaltASPrintServerAttr?
  3854.  
  3855.      enum {
  3856.      #define gestaltASPrintServerAttr? 'asps'
  3857.      gestaltASPrintServerPresent? = 0};
  3858.  
  3859. AtEa (At Ease Startup [2.0?], part of At Ease for Workgroups)
  3860. ATI  (??? [???])
  3861. ATR  (Type Reunion ext [1.0?] by Adobe Systems Inc.)
  3862. bART (MacCheck app [1.0])
  3863. BaRT (MacCheck app [1.0])
  3864. bast (Launcher cp [1.0?], part of System 7.0.1P and 7.1P)
  3865. batt (Powerbook Duo Enabler [1.0])
  3866.      (System [7.5])
  3867.      (System Enabler 111 [1.0])
  3868.      (System Enabler 121 [1.0])
  3869.      (System Enabler 131 [1.0])
  3870.      (System Enabler 201 [1.0]))
  3871.      Returns information about the PowerBook battery?
  3872.  
  3873.      The debugger name for the routine which returns the response for this
  3874.      selector is called 'GETTIMELEFT'. But in what units? And what time?
  3875.      I've only seen the value 0, 5 or 6 returned. The GDEF calls the Power
  3876.      Manager (_PMgrOp [0xA085 with D0=0x00]) to get the info but I can't
  3877.      find which function. (Rene Ros)
  3878.  
  3879. brcn (Screen? cp [1.0?] on Color Classic)
  3880. brcN (Energy Saver cp [1.0?], part of Monitor Energy Saver)
  3881. bugx (7.5.2 Printing Fix ext [1.0.2?])
  3882.      (System [7.5])
  3883.      (System Update ext [3.0])
  3884.      gestaltBugFixAttrsThree
  3885.      Returns information about the fixes applied.
  3886.  
  3887.      enum {
  3888.      #define gestaltBugFixAttrsThree 'bugx'
  3889.      gestalt???                       =  0,
  3890.      gestaltFSpCreateScriptSupportFix =  1,
  3891.        /* FSpCreate and FSpCreateResFile correctly set scriptCode in the */
  3892.        /*  volume's catalog &AS23 */
  3893.      gestalt???                       =  2,
  3894.      gestalt???                       =  3,
  3895.      gestalt???                       =  5,
  3896.      gestalt???                       =  7,
  3897.      gestalt???                       =  8,
  3898.      gestaltDIXZeroSupportsBadBlocks  =  9,  /* &AD29 */
  3899.      gestaltOTPrintingFix?            = 10}; /* OT Printing fix by */
  3900.                                              /*  7.5.2 Printing Fix ext */
  3901.  
  3902.      NOTE:
  3903.      The System Update reserves the 'bugx', 'bugy' and 'bugz' gestalt
  3904.      selectors to indicate which fixes are installed on a given machine.
  3905.      These are for Apple internal use only, and developers should not rely
  3906.      on these. There is no guarantee that they will be supported in future
  3907.      versions of Macintosh system software. &AT06
  3908.  
  3909. bugy (32-bit System Enabler [1.0])
  3910.      (Hardware System Update ext [1.0])
  3911.      (MIDI Manager ext [2.0.2?])
  3912.      (Network Launch Fix ext [1.0])
  3913.      (Sound Manager ext [3.0])
  3914.      (System? [7.1?])
  3915.      (System enabler 065)
  3916.      gestaltBugFixAttrsTwo
  3917.      Returns information about the fixes applied.
  3918.  
  3919.      enum {
  3920.      #define gestaltBugFixAttrsTwo 'bugy'
  3921.      gestaltBugsEgretDispatchPatch? =  0,  /* these correct the */
  3922.      gestaltBugsEgretTimePatch?     =  1,  /*  system clock and */
  3923.                                            /*  modem perf.? */
  3924.      gestalt???                     =  2,  /* unknown, Hardware Upd. */
  3925.      gestaltEgretTickHandlerPatch?  =  3,  /*  see bit 0 & 1 ? */
  3926.      gestalt???                     =  4,  /* unknown, Hardw. Upd. */
  3927.      gestaltSCSIPatch?              =  5,  /* floppy drive fixed ? */
  3928.      gestalt???                     =  6,  /* unknown, Hardw. Upd. */
  3929.      gestalt32bitEnabler?           =  7,  /* 32-bit enabler avail?*/
  3930.      gestalt???                     =  8,  /* unknown, MIDI Mgr */
  3931.      gestalt???                     =  9,  /* unknown, Sound Mgr 3 */
  3932.      gestalt???                     = 11,  /* unknown, Hardw. Upd. */
  3933.      gestalt???                     = 12,  /* unknown, Hardw. Upd. */
  3934.      gestalt???                     = 13,  /* unknown, Hardw. Upd. */
  3935.      gestalt???                     = 14,  /* unknown, Hardw. Upd. */
  3936.      gestalt???                     = 15,  /* unknown, Hardw. Upd. */
  3937.      gestalt???                     = 16,  /* unknown, Hardw. Upd. */
  3938.      gestaltKeyboardPatch?          = 17,  /* corrects Adjustable */
  3939.                                            /*  Kbd 'kbd ' response?*/
  3940.      gestalt???                     = 18,  /* unknown, Hardw. Upd. */
  3941.      gestalt???                     = 19,  /* unknown, ??? */
  3942.      gestalt???                     = 20,  /* unknown, ??? */
  3943.      gestalt???                     = 21,  /* unknown, ??? */
  3944.      gestalt???                     = 24,  /* unknown, ??? */
  3945.      gestalt???                     = 25,  /* unknown, ??? */
  3946.      gestaltFSpExchangeFilesCompatibilityFix = 26,
  3947.        /* FSpExchangeFiles compatibility code fixed &AS23 */
  3948.      gestaltNetworkLaunchFix?       = 27,  /* fix problem with */
  3949.                                            /*  appl. on server */
  3950.                                            /*  launch with 68040 */
  3951.      gestalt???                     = 28,  /* unknown, ??? */
  3952.      gestalt???                     = 31}; /* unknown, ??? */
  3953.  
  3954.      WARNING:
  3955.      These are ALL guesses. Well not entirely, I used the ResEdit CODE
  3956.      Editor to peek into the 32-bit System Enabler, Hardware System update
  3957.      and other software. Please check if I'am right. You should be able to
  3958.      find some of the answers in the INIT resource of the Hardware Update
  3959.      and the names of the PTCH resources in version 1.0 were also useful...
  3960.  
  3961.      NOTE:
  3962.      The System Update reserves the 'bugx', 'bugy' and 'bugz' gestalt
  3963.      selectors to indicate which fixes are installed on a given machine.
  3964.      These are for Apple internal use only, and developers should not rely
  3965.      on these. There is no guarantee that they will be supported in future
  3966.      versions of Macintosh system software. &AT06
  3967.  
  3968. bugz (System [7.0]/Tune-up ext)
  3969.      gestaltBugFixAttrs(One)?
  3970.      Returns information about the fixes applied.
  3971.  
  3972.      enum {
  3973.      #define gestaltBugFixAttrs(One)? 'bugz'
  3974.      gestaltFixPrinting             =  0,
  3975.      gestaltResponderCrashFix       =  1,
  3976.      gestaltResponderVersionFix     =  2,
  3977.      gestaltPurgeFonts              =  3,
  3978.      gestaltAliasMgrFix             =  4,
  3979.      gestaltSCSIFix                 =  5,
  3980.      gestaltKeyboardFix             =  6,
  3981.      gestaltTrueTypeFix             =  7,
  3982.      gestaltFixedMicroseconds       =  8,
  3983.      gestaltSaveLastSPExtra         =  9,
  3984.      gestaltVMCursorTaskFix         = 10,
  3985.      gestaltDietPatches             = 11,
  3986.      gestaltBackgroundPrintingPatch = 12,
  3987.      gestaltNoPreferredAlertPatch   = 13,
  3988.      gestaltAllocPtrPatch           = 14,
  3989.      gestaltEPPCConnectionTableFix  = 15,
  3990.      gestaltDAHandlerPatch          = 16,
  3991.      gestaltLaunchFix               = 17,
  3992.      gestaltDeathNoticePatches      = 18,
  3993.      gestaltBacklightFix            = 19,
  3994.      gestaltPrintDriverFix          = 20,
  3995.      gestaltPMSegmentTweaks         = 21,
  3996.      gestaltWDEFZeroFix             = 22,
  3997.      gestaltPACKSixFix              = 23,
  3998.      gestaltResolveFileIDRefFix     = 24,
  3999.      gestaltDisappearingFolderFix   = 25,
  4000.      gestaltPowerBookSerialFix      = 26,
  4001.      gestaltPowerBookSleepFix       = 27,
  4002.      gestaltPowerBookFloppyEjectFix = 28,
  4003.      gestaltPowerBookSleepFPUFix    = 29,
  4004.      gestaltPowerBookRestFPUFix     = 30,
  4005.      gestalt???                     = 31};
  4006.  
  4007.      NOTE:
  4008.      The System Update reserves the 'bugx', 'bugy' and 'bugz' gestalt
  4009.      selectors to indicate which fixes are installed on a given machine.
  4010.      These are for Apple internal use only, and developers should not rely
  4011.      on these. There is no guarantee that they will be supported in future
  4012.      versions of Macintosh system software. &AT06
  4013.  
  4014. cate (Catalogs Extension? ext [???], part of PowerTalk)
  4015.      Bit 0 set.
  4016.  
  4017. CDJR (Apple Menu Options cp [1.0], part of System 7.5)
  4018.      (ExtendedAppleMenu [???] by Chris Derossi)
  4019. cfmg (System [7.1.2 on PowerMac])
  4020.      (CFM68K ext [1.0a1], part of OpenDoc)
  4021. cith (System? [???])
  4022.      Seen under MAE 1.0.
  4023.  
  4024. clbv (PowerTalk ext [1.0?], part of PowerTalk)
  4025.      Bit 0 set.
  4026.  
  4027. cmic (Sound Input Amplification ext [1.0])
  4028.      Returns 1 on a PM 7200/90.
  4029.  
  4030. cnfn (??? [???])
  4031.      Checked for by the PPC Debugger Nub extension and control panel.
  4032.  
  4033. comp (QuickDraw Font Plus ext [???], part of the KanjiTalk 7.1)
  4034.  
  4035.      NOTES:
  4036.      The name "QuickDraw Font Plus" is translated from Japanese and may be
  4037.      translated differently by Apple Computer, Inc.
  4038.  
  4039.      I think 'comp' stands for 'composite', as the INIT contains patches to
  4040.      the Font Manager needed to handle 'composite font suitcases'.
  4041.      (Marco Piovanelli)
  4042.  
  4043. ctxm (???)
  4044. cuda (System? [7.1.2?], on Performa 630TV)
  4045.      gestaltCudaDispatchMgrAttr?
  4046.      Returns information about the Cuda Dispatch Manager?
  4047.  
  4048.      #define gestaltCudaDispatchMgrAttr? 'cuda'
  4049.  
  4050.      Values found: 0x0002 0025 and 0x0002 0028
  4051.  
  4052. CYP8 (MegaPhone Menu ext [1.0] by Cypress Research Corp.,
  4053.                                part of Apple Telecom)
  4054. ddsk (DropDisk app [1.0b3], formerly Mount'em app by Mike Wise and
  4055.                             Chris Cotton of Apple Computer)
  4056.      Only installed if DropDisk driver is loaded. Looks like the highword
  4057.      contains the version (of driver or application?) as BCD, while the
  4058.      low-word is a mystery.
  4059.  
  4060.      NOTE:
  4061.      See also the 'mtem' selector installed by Mount'em 1.0b1 and 1.0b2.
  4062.  
  4063. detc (???)
  4064. diag (Automated Diagnostics ext [1.0], part of Apple Personal
  4065.                                        Diagnostics 1.0)
  4066. doub (WorldScript II ext [7.2?], part of KanjiTalk7 and
  4067.                                  several language kits)
  4068.      gestaltDoubleByteScriptVersion?
  4069.      Returns the version of WorldScript II as BCD?
  4070.  
  4071.      #define gestaltDoubleByteScriptVersion? 'doub'
  4072.  
  4073.      NOTE:
  4074.      This selector seems to be installed by WorldScript II (the
  4075.      System 7.1 ext needed to handle double-byte scripts like Japanese,
  4076.      Korean and Traditional Chinese). Known returned value is 0x0710.
  4077.      (Marco Piovanelli)
  4078.  
  4079. dude (Powerbook Duo Enabler [1.0])
  4080.      (System [7.5])
  4081.      (System Enabler 111 [1.0])
  4082.      (System Enabler 121 [1.0])
  4083.      (System Enabler 131 [1.0])
  4084.      (System Enabler 201 [1.0]))
  4085. dudi (Powerbook Duo Enabler [1.0])
  4086.      (System [7.5])
  4087.      (System Enabler 111 [1.0])
  4088.      (System Enabler 121 [1.0])
  4089.      (System Enabler 131 [1.0])
  4090.      (System Enabler 201 [1.0]))
  4091. EM20 (Extensions Manager cp [2.0] by Ricardo Batista)
  4092.      gestaltExtensionsManager?
  4093.      Selector only indicates presence of the Extensions Manager software?
  4094.      (Anthony DeRobertis)
  4095.  
  4096.      #define gestaltExtensionsManagerExists? 'EM20'
  4097.  
  4098.      NOTE:
  4099.      Not installed by version 3.0 which is part of System 7.5?
  4100.  
  4101. enav (System? [7.5.3])
  4102.      Observed value: 1 (PM 7500/100, PM 7600/120 and PM 8200/100 all with
  4103.                         System 7.5.3).
  4104.  
  4105. fall (WalkInit ext [1.0?], part of Walkabout)
  4106.      ???
  4107.      Returns the adres of ??? (Anonymous)
  4108.  
  4109. fdbk (Speech Setup cp? [???], part of PlainTalk)
  4110. fdrs (Finder [7.1.1?])
  4111.      Installed by Finder extension?
  4112.  
  4113. flpy (System? [7.5.2?] on new Mac codenamed Elixer ID#58)
  4114.      Observed value: 0.
  4115.  
  4116. fnda (Finder [7.1.1])
  4117.      NOTE: The a is actually the option-a character (0x8C).
  4118.  
  4119. fnd& (Finder?, System? [7.1.2 on PowerMac?])
  4120.      NOTE: The & is actually the option-shift-a character (0xE5).
  4121.  
  4122. fnd* (Finder [7.1.1])
  4123.      NOTE: The * is actually the shift-6 character (0xF6).
  4124.  
  4125. fnd? (Finder [7.1.1?])
  4126.      Installed by Finder extension?
  4127.  
  4128. fndc (Finder [7.1.1])
  4129. fndf (Find File Extension ext [1.1.1], part of System 7.5 Update 1.0)
  4130.      Returns the type of software extending the find capabilities of the
  4131.      Finder? If the selector isn't installed the find capabilities are
  4132.      not extended or an older version of Find File is installed?
  4133.      The response is 'fndf' if Find File is installed. (Rene Ros)
  4134.  
  4135. fndm (Powerbook 5300/2300/190 Enabler [1.2.1])
  4136.      gestaltFinder???
  4137.      By installing this selector and setting specified bits in the response
  4138.      some features of the Finder are DISABLED.
  4139.  
  4140.      enum {
  4141.      #define gestaltFinder? 'fndm'
  4142.      /* all the following bits are not defined prior to Finder 7.5.4 ? */
  4143.      gestaltFinderDisableTranslucent? = 0}; /* if set, no translucent */
  4144.                                             /*  icons while dragging */
  4145.  
  4146.      NOTES:
  4147.      The m is actually an option-m (0xB5).
  4148.  
  4149.      See the 'fndx' (option-x) selector to ENABLE Finder features.
  4150.  
  4151.      This selector is installed on a PowerBook 5300ce by the
  4152.      Powerbook 5300/2300/190 Enabler to disable translucent dragging.
  4153.      (Masatsugu Nagata)
  4154.  
  4155. fndn (Finder?, System? [7.1.2 on PowerMac?])
  4156.      NOTE: The n is actually an option-n, n (0x96).
  4157.  
  4158. FNDR (Finder [7.1.1?])
  4159.      Installed by Finder extension?
  4160.  
  4161. fndv (Finder? [???], part of System 7.5.2)
  4162. fndx (AliasDragger ext [1.0b1] by Leonard Rosenthol)
  4163.      (ControlDragEnabler ext [1.0] by Anthonis DeRobertis)
  4164.      (Finder Enabler ext [1.0] by Marco Piovanelli)
  4165.      (Hidden Finder Features cp [1.0] by Richard Burgess)
  4166.      (Secret Finder Features ext [???] by Mark Bizer)
  4167.      gestaltFinderFeaturesAttr?
  4168.      By installing this selector and setting specified bits in the response
  4169.      some undocumented features of the Finder are ENABLED.
  4170.  
  4171.      enum {
  4172.      #define gestaltFinderFeaturesAttr? 'fndx'
  4173.      /* all the following bits are not defined prior to the */
  4174.      /* System 7.1 Pro Finder */
  4175.      gestaltFinderControlDrag?    = 0,  /* if set, control dragging an */
  4176.                                         /*  item creates an alias */
  4177.      gestaltFinderRevealOriginal? = 1,  /* if set, Reveal Original menu */
  4178.                                         /*  item is added */
  4179.      /* all the following bits are not defined prior to Finder 7.5.5 */
  4180.      gestaltFinderTrashSelection? = 2,  /* if set, Command-Delete moves */
  4181.                                         /*  selection to trash */
  4182.      gestaltFinderKillZoomRects?  = 3}; /* if set, no zoom rectangles */
  4183.                                         /*  are shown. */
  4184.  
  4185.      NOTES:
  4186.      The x is actually an option-x (0xC5).
  4187.  
  4188.      See the 'fndm' (option-m) selector to DISABLE Finder features.
  4189.  
  4190.      Apperantly the Finder team implemented several features not approved
  4191.      by the 'high command'. Under normal circumstances these features are
  4192.      not available, unless the correct bit is set with the response of
  4193.      this selector. There are probably more bits defined, or already
  4194.      obsolete because the feature got implemented with later versions of
  4195.      the Finder. (Anonymous)
  4196.  
  4197.      Setting bit 1 causes a new menu item to be added to the Finder's File
  4198.      menu, just below "Find Again". The new item is "Reveal Original" and
  4199.      it instantly resolves alias files! (Marco Piovanelli)
  4200.      And it also reveals the application the selected document is opened
  4201.      with when double-clicked. (Jon Pugh)
  4202.  
  4203.      Finder 7.5.5 adds, at least, two more bits to this list. When bit 2 is
  4204.      set, using the Command-Delete moves the current selection to the Trash.
  4205.      With bit 3 one can turn the zoom rectangles, visible when opening and
  4206.      closing windows, on and off.
  4207.      System 7.5.3 and System 7.5 Update 2.0 includes Finder 7.5.5.
  4208.      (Also part of the System 7.5.3 PowerBook 5300 update?)
  4209.      (Rene Ros, based on the Secret Finder Features read-me file written
  4210.      by Marc Bizer; Masatsugu Nagata).
  4211.  
  4212. futr (ThreadsINIT ext [2.0?], part of Threads Package)
  4213. fstn (System? [7.5.2?])
  4214.      Returns 1 on a PB 5300 (7.5.2) and Duo 210 (7.5.3).
  4215.  
  4216. gacc (System? [7.5.2?])
  4217. gFax (Fax Extension ext [1.1?], part of Express Modem Software)
  4218. gntz (System [7.1.2 on PowerMac])
  4219. gpad (General Controls cp [7.5])
  4220.      gestaltGeneralControlsAddr?
  4221.      Returns the address to the long value returned by the 'gprf'
  4222.      selector to change that value. (Jon Pugh)
  4223.  
  4224.      #define gestaltGeneralControlsAddr? 'gpad'
  4225.  
  4226. gprf (General Controls cp [7.5])
  4227.      gestaltGeneralControlsAttr?
  4228.      Returns information about the settings made in the General Controls
  4229.      control panel.
  4230.  
  4231.      enum {
  4232.      #define gestaltGeneralControlsAttr? 'gprf'
  4233.      gestaltControlGoDocuments?  = 0,  /* go to Documents folder */
  4234.      gestaltControlGoLast?       = 1,  /* go to last used folder */
  4235.      gestaltControlProtectSystem?= 2,  /* Protect System folder */
  4236.      gestaltControlHideDesktop?  = 3,  /* Hide desktop */
  4237.      gestaltControlLauncher?     = 4,  /* Display Launcher on startup */
  4238.      gestaltControlWarnShutdown? = 5}; /* Warn on incorrect shutdown */
  4239.  
  4240. HAM  (Apple Menu Options cp [1.0], part of System 7.5)
  4241.      (HAM ??? [???] by Inline Design)
  4242. harp (PowerBook cp? [7.2?])
  4243. hcsl (Finder [7.1.1?])
  4244. heap (System [7.1.2 on PowerMac])
  4245.      Bits 1 and 5 set.
  4246.  
  4247. hgfd (AppleShare File Server appl [3.0])
  4248.      gestaltASFileServerAttr?
  4249.  
  4250.      enum {
  4251.      #define gestaltASFileServerAttr? 'hgfd'
  4252.      gestaltASFileServerPresent? = 0};
  4253.  
  4254. HrIt (HearIt cp [1.0])
  4255. iadj (System? [7.1.2?] with PowerTalk?)
  4256.      (Display Enabler ext, Icon relocation INIT ID#3 [1.0])
  4257. idsp (System? [7.1?] on Macs with sound input?)
  4258.      Values found: 0xFFFF FFFF, 0x000C, 0x0000
  4259.  
  4260. immg (??? [???] on PowerBook 520/540? and Performa 630TV)
  4261.      Value found: 0x0100 0000. Version?
  4262.  
  4263. intD (??? [???])
  4264.  
  4265.      NOTE:
  4266.      This is a mystery selector.  It isn't installed by any software, as
  4267.      far as I know, but the Finder 7.1 checks for this selector in certain
  4268.      situations. (Marco Piovanelli)
  4269.  
  4270. irhk (IRTalk ext [1.2?])
  4271.      ???
  4272.  
  4273.      NOTE:
  4274.      Returns gestaltUnknownErr (-5550) when the extension is installed on
  4275.      a Macintosh without Infra-Red capable hardware. Or when IR software
  4276.      is disabled (AppleTalk off?). (Rene Ros)
  4277.  
  4278. irhw (IRTalk ext [???] ?)
  4279.      ????
  4280.  
  4281.      NOTE:
  4282.      On a PM 7100 with System 7.5.3 universal this selector returns noErr
  4283.      and a response value of zero. (Jean-Pierre Curcio)
  4284.  
  4285. jkbd (??? (Japanese!) ext [1.0], part of KanjiTalk)
  4286. lang (WorldScript II ? ext [7.2?], part of KanjiTalk7 and
  4287.                                    several language kits)
  4288.      gestaltLanguageMgrAttr
  4289.      Returns information about the Language Manager?
  4290.  
  4291.      enum {
  4292.      #define gestaltLanguageMgrAttr 'lang'
  4293.      gestaltLanguageMgrPresent? = 0,
  4294.      gestaltLanguageMgr???      = 1}; /* Japanese Language Kit v1.2 */
  4295.  
  4296. LASB (LaserWriter Bridge cp [2.0?], part of Network Software Installer 1.5)
  4297.      gestaltLaserWriterBridgeAddr?
  4298.  
  4299.      #define gestaltLaserWriterBridgeAddr? 'LASB'
  4300.  
  4301. ldap (???)
  4302. lngb (WorldScript II ? ext [7.2?], part of KanjiTalk7 and
  4303.                                    several language kits)
  4304.      Value found: 0x00001FFF.
  4305.  
  4306. lstk (Speech Setup cp? [???], part of PlainTalk)
  4307. ltma (Link Tool Manager ext [2.0?], part of Apple Remote Access 2.0)
  4308.      gestaltLinkToolVersion?
  4309.      Returns the version of the Link Tool Manager as NumVersion?
  4310.  
  4311.      #define gestaltLinkToolVersion? 'ltma'
  4312.  
  4313.      NOTE:
  4314.      The only value I've seen returned was 0x02002008, which would mean
  4315.      '2.0d8' which was not correct since the 'vers' recource said '2.0f0'.
  4316.      The value is hardcoded in the .LTM Driver resource. (Rene Ros)
  4317.  
  4318. mash (System [7.1P?]/At Ease [1.0?])
  4319.  
  4320.      NOTE:
  4321.      The Starter cp (part of System 7.1P) and Launcher cp (part of
  4322.      System 7.5) both contain a 'mash' resource and includes a template for
  4323.      it. Can this be the same data-structure? (Rene Ros)
  4324.  
  4325. mbox (Mailbox Extension? ext [???], part of PowerTalk?)
  4326.      gestaltMailboxVersion?
  4327.      Returns version of Mailbox software as INTEGER.
  4328.  
  4329.      #define gestaltMailboxVersion? 'mbox'
  4330.  
  4331. MClk (Date & Time cp [7.5], part of System 7.5)
  4332.      (SuperClock! cp [4.0] by Steve Christensen)
  4333. mfdr (At Ease [1.0])
  4334.      Returns handle to alias of At Ease Items folder?
  4335.  
  4336. mjik (MenuMagic ext [1.0], part of System 7.1 Pro and 7.5)
  4337. mtem (Mount'em app [1.0b1-1.0b2] by Mike Wise and Chris Cotton of
  4338.                                     Apple Computer)
  4339.      See the 'ddsk' selector installed by DropDisk 1.0b3 and later.
  4340.  
  4341. mtv! (TV Setup cp [1.0], part of System for Macintosh TV?)
  4342.  
  4343.      NOTE:
  4344.      Not seen installed, disassembled control panel, meaning unknown.
  4345.      It's probably an address. (Rene Ros)
  4346.  
  4347. Norm (68K DebugServicesINIT ext [2.0?])
  4348.      Pointer to callback function?
  4349.  
  4350. NubA (Debugger INIT ext [1.0] distributed with MetroWerks CodeWarrior)
  4351. NubD (Debugger INIT ext [1.0] distributed with MetroWerks CodeWarrior)
  4352. NubH (Debugger INIT ext [1.0] distributed with MetroWerks CodeWarrior)
  4353. NubV (Debugger INIT ext [1.0] distributed with MetroWerks CodeWarrior)
  4354. octb (System? [7.5?] on PowerBook 520/540?)
  4355. ot   (??? [???])
  4356.      gestaltOpenTransportAttr?
  4357.      Returns information about the Open Transport software?
  4358.  
  4359.      enum {
  4360.      #define gestaltOpenTransportAttr? 'ot  '
  4361.      gestaltOpenTransportPresent? = 0};
  4362.  
  4363.      NOTE:
  4364.      Defined with early test-versions of Open Transport? Never seen
  4365.      installed. See the 'otan' selector.
  4366.  
  4367. otmo (Open Transport lib [1.1.1?])
  4368.      OpenTransportModemAttr?
  4369.      Returns information about the Open Transport Modem software?
  4370.  
  4371.      enum {
  4372.      #define OpenTransportModemAttr? 'otmo'
  4373.      gestaltOpenTptModemPresent? = 0x00000001};
  4374.  
  4375. otmv (Open Transport lib [1.1.1?])
  4376.      OpenTransportModemVersion?
  4377.      Returns the version of Open Transport Modem software as NumVersion?
  4378.  
  4379.      #define OpenTransportModemVersion? 'otmv'
  4380.  
  4381.      NOTE: Observed value 0x01000080 is incorrect!?
  4382.  
  4383. otra (Open Transport lib [1.1.1?])
  4384.      OpenTransportRemoteAccessAttr?
  4385.      Returns information about the Open Transport Modem software?
  4386.  
  4387.      #define OpenTransportRemoteAccessAttr? 'otra'
  4388.  
  4389.      NOTE: Observed value: 27 (!?).
  4390.  
  4391. otrv (Open Transport lib [1.1.1?])
  4392.      OpenTransportRemoteAccessVersion?
  4393.      Returns the version of Open Transport Modem software as NumVersion?
  4394.  
  4395.      #define OpenTransportRemoteAccessVersion? 'otrv'
  4396.  
  4397.      NOTE: Observed value 0x01000080 is incorrect!?
  4398.  
  4399. PhoN (PowerBook Setup cp [7.3.1?], PhoneINIT INIT resource)
  4400. port (Powerbook Duo Enabler [1.0])
  4401.      (System [7.5])
  4402.      (System Enabler 111 [1.0])
  4403.      (System Enabler 121 [1.0])
  4404.      (System Enabler 131 [1.0])
  4405.      (System Enabler 201 [1.0])
  4406.      gestaltPortAttr?
  4407.      Returns information about the ports?
  4408.  
  4409.      enum {
  4410.      #define gestaltPortAttr? 'port'
  4411.      gestaltHasInternalModem?   = 0?,
  4412.      gestaltHasExternalPrinter? = 1?,
  4413.      gestaltHasExternalModem?   = 2?};
  4414.  
  4415.      NOTE:
  4416.      System Enabler 201 and PowerBook Duo enabler contain an GDEF resource
  4417.      which indicates bits 0, 1 and 2 can be set. (Rene Ros)
  4418.  
  4419. ppad (Performa cp [1.1], part of System 7.1P)
  4420. ppcv (System? [???])
  4421.      gestaltPPCVersionAttr &AS16
  4422.      Returns the version of the PPC Toolbox? Or attribute bits?
  4423.  
  4424.      #define gestaltPPCVersionAttr 'ppcv'
  4425.  
  4426. pprf (Performa cp [1.1], part of System 7.1P)
  4427. ptlk (Speech Setup cp? [???], part of PlainTalk)
  4428. puir (IRTalk ext [1.2?])
  4429.      gestaltInfraRedManager?
  4430.      Returns the version of the manager for Infrared transmission? as BCD?
  4431.  
  4432.      #define gestaltInfraRedManager? 'puir'
  4433.  
  4434.      NOTE:
  4435.      Seen on PB 190cs prototype (0x0100) and PB 5300 (0x0200300). On a
  4436.      released PB 5300c it returns 0x01000200.
  4437.      (Anonymous, Rene Ros)
  4438.  
  4439. pwtr (PowerTracer cp [1.0a2NoOpt?])
  4440. pxtn (Desktop Printer Extension? ext [1.0])
  4441.      (QuickDraw GX? ext? [???])
  4442.      ???
  4443.      Returns the version of the ??? as NumVersion.
  4444.  
  4445.      NOTE:
  4446.      The Desktop Printer Extension included with LaserWriter 8.3 (version
  4447.      '1.0f1c2 (nodebug)') contains a resource of type 'GFUN' which looks
  4448.      very much like a selector function. The code in it checks for 'pxtn'
  4449.      and tries to return a version number. But the code 'pxtn' is never
  4450.      installed as a selector!? (Rene Ros)
  4451.  
  4452. Remt (AutoRemounter cp [???])
  4453. scrf (WorldScript Power Adapter ext? [7.5?])
  4454. serh (System? [7.1.2?])
  4455.      gestaltSerialHardware?
  4456.      Returns type of hardware used for serial I/O?
  4457.  
  4458.      enum {
  4459.      #define gestaltSerialHardware? 'serh' /* Serial Hardware */
  4460.      gestaltClassicSer? = 'Clas',  /* returned on PM 8100/80 */
  4461.      gestalt???         = 'Impl',  /* returned on Quadra 660AV */
  4462.                                    /*  with System 7.5.1 */
  4463.      gestalt???         = 'PdmS',  /* returned on Power Mac with */
  4464.                                    /*  Express Modem software */
  4465.      gestalt???         = 'TntS'}; /* returned on PM 7200, */
  4466.                                    /*  PM 8500, PM 9500 with */
  4467.                                    /*  System 7.5.2 and later models */
  4468.                                    /*  and systems */
  4469.  
  4470. shal (SerialDMA ext [2.0.2?] part of 7.5.2 Printing Update [1.1])
  4471.      (System [7.1?])
  4472.      gestaltSerialHAL?
  4473.  
  4474.      #define gestaltSerialHAL? 'shal'
  4475.  
  4476.      NOTE:
  4477.      Returns 1 (Centris 660AV) and 2 (PowerMacs). The SerialDMA extension
  4478.      possibly also installs value 3.
  4479.  
  4480.      This selector may be installed but returns gestaltUnknownErr instead
  4481.      of zero. (Rene Ros)
  4482.  
  4483. slnk (MNPLinkTool? [1.0], part of Apple Remote Access)
  4484. sndx (Sound Manager ext [3.0]?)
  4485.      gestaltSoundMgrAttr?
  4486.  
  4487.      enum {
  4488.      #define gestaltSoundMgrAttr? 'sndx'
  4489.      gestaltSoundMgrPresent? = 0?};
  4490.  
  4491. SNKR (StyleWriter 1200 ext ? [1.0?])
  4492. sr/2 (System? [???])
  4493.       Observed on Power Macintosh 9500/120 with system 7.5.3.
  4494.  
  4495. syep (??? [???)
  4496.      Observed on Performa 6300.
  4497.  
  4498. thng (ThreadsINIT ext [2.0?], part of Threads Package)
  4499. thrd (ThreadsINIT ext [2.0?], part of Threads Package)
  4500. udsk (System [7.1.2 on PowerMac])
  4501. udsv (System [7.1.2 on PowerMac])
  4502. valk (System? [7.5.1?] on Power Mac 5200)
  4503.      gestaltValkyrie?
  4504.      Returns information about the Valkyrie video chip?
  4505.  
  4506.      enum {
  4507.      #define gestaltValkyrie? 'valk'
  4508.      gestaltValkyriePresent? = 0?};
  4509.  
  4510. vdrc (PC Exchange? cp [1.0?])
  4511. vmbs (System [7.0])
  4512.      gestaltVMBackingStoreRef?
  4513.      Returns the file reference number of the Virtual Memory storage file
  4514.      if VM is present.
  4515.  
  4516.      #define gestaltVMBackingStoreRef? 'vmbs'
  4517.  
  4518. vmcl (System, VM on [7.0])
  4519. vmem (RAM Doubler [1.0] by Connectix Corporation)
  4520.      gestaltVMExtensionMgr?
  4521.      Returns type of software used to extend the Virtual Memory Mgr?
  4522.  
  4523.      #define gestaltVMExtensionMgr? 'vmem'
  4524.      #define gestaltRAMDoubler? 'RaM2'
  4525.  
  4526.      NOTE: See 'Reports' chapter (RAMDoubler section) for more information.
  4527.  
  4528. wnkl (System? [7.5.2?])
  4529.  
  4530. Unknown Third Parties Software
  4531. ==============================
  4532. This chapter lists selector codes of which the meaning is not documented and
  4533. are installed by Third Parties software.
  4534.  
  4535. *DC* (DepthCharge cp [???] by Maf Vosburgh)
  4536. 1FX2 (???)
  4537. 1FX3 (???)
  4538. 1FX4 (???)
  4539. 2FX1 (ShutdownFX ext? [2.1?] by ???)
  4540. 2FX2 (???)
  4541. 2FX3 (???)
  4542. 2FX4 (???)
  4543. 5mat (???)
  4544. Aarn (Aaron ext [1.0] by Greg Landweber)
  4545.      NOTE: See also 'Aarp', 'Aaru' and 'Copl' in this section.
  4546.  
  4547. Aarp (Aaron ext [1.0] by Greg Landweber)
  4548.      NOTE: See also 'Aarn', 'Aaru' and 'Copl' in this section.
  4549.  
  4550. Aaru (Aaron ext [1.0] by Greg Landweber)
  4551.      NOTE: See also 'Aarn', 'Aarp' and 'Copl' in this section.
  4552.  
  4553. AClk (AutoClock Extension ext [1.3?] by Jean-Pierre Gachen)
  4554. AcPC (AccessPC cp [3.0?] by Insignia Solutions)
  4555.      Version 3.0 always returns 0x8765 4321.
  4556.  
  4557. ADex (AfterDark [2.0?] by Berkeley Systems, Inc.)
  4558. ADii (AfterDark [2.0?] by Berkeley Systems, Inc.)
  4559.  
  4560.      NOTE:
  4561.      Not installed by AfterDark but the GDEF indicates it is able to return
  4562.      a response.
  4563.  
  4564. ADr2 (AfterDark [2.0?] by Berkeley Systems, Inc.)
  4565.  
  4566.      NOTE:
  4567.      Not installed by AfterDark but the GDEF indicates it is able to return
  4568.      a response.
  4569.  
  4570. ADR2 (DDExpand appl [3.7.7?] by Symantec Corp.)
  4571.      Returns an pointer to a parameter block with unknown structure. Offset
  4572.      0x0C seems to be a pointer to code. (Anonymous 'Fig')
  4573.  
  4574.      NOTE:
  4575.      Installed by a special version of the software instead of the 'ADRC'
  4576.      selector. Perhaps a special version with limited distribution to
  4577.      software vendors for working with the Autodoubler Internal (resource)
  4578.      Compressor. (Anonymous 'Fig')
  4579.  
  4580.      See also 'ADRC'.
  4581.  
  4582. ADRC (DDExpand appl [3.7.7?] by Symantec Corp.)
  4583.      Returns an pointer to a parameter block with unknown structure. Offset
  4584.      0x0C seems to be a pointer to code. (Anonymous 'Fig')
  4585.  
  4586.      NOTE: See also 'ADR2'.
  4587.  
  4588. ADTK (Talk*Control cp [???] by 2Way Computing, Inc.)
  4589. aGhN (RemoteMouse&Keys cp [1.0b1] by Alan G. Hawrelak)
  4590. AP00..AP06
  4591.      (RapidLock cp, RapidTrak cp or drivers? [1.1], part of RapidTrak
  4592.       software by Insignia Solutions Inc.)
  4593.      It seems these selectors are installed for each harddisk connected to
  4594.      your Macintosh. The last two bytes of the selector is the SCSI ID.
  4595.  
  4596. AP17 (AccessPC cp [2.0?] by Insignia Solutions)
  4597. ApWi (ApplWindows cp [2.0?] by Hiro Yamamoto)
  4598. ASB! (???)
  4599. ASB$ (???)
  4600. ASD* (???)
  4601. ASTN (Asante EN/SC ext [???] by Asante Technologies, Inc.)
  4602. aYmm (AfterDark [2.0?] by Berkeley Systems, Inc.)
  4603. AzNe (NameView cp [2.7?] by AStar Technologies, Inc.)
  4604. A–Tr (Trapper ext [1.0?] by Alessandro Levi Montalcini)
  4605. BAKG (???)
  4606. Bars (Virtual Desktop Extension ext [1.8?], part of Virtual Desktop
  4607.                                             by AWOL Software, Ross Brown)
  4608. Blad (Blood cp [1.0.1?] by Alessandro Levi Montalcini)
  4609.      NOTES:
  4610.      The B is actually the option-s character (0xA7).
  4611.      The d is actually the option-d character (0xB6).
  4612.  
  4613. bMRN (Super Boomerang cp [4.0?], part of Now Utilities by Now Software)
  4614. BTLR (Butler Access ext [1.2.7?], part of Butler Access
  4615.                                   by Everywhere Development Corp.
  4616. cc20 (Conflict Catcher ext [2.0?] by ???)
  4617.      NOTE: The 'cc' are actually option-c (0x8D).
  4618.  
  4619. cc30 (Conflict Catcher ext [3.0?] by ???)
  4620.      NOTE: The 'cc' are actually option-c (0x8D).
  4621.  
  4622. ccGS (Conflict Catcher ext ? [3.0?] by ???)
  4623.      NOTE: The 'cc' are actually option-c (0x8D).
  4624.  
  4625. CDFL (???)
  4626. CDmn (CDMenu cp [1.0?] by Henrik Eliasson)
  4627. CDUf (CDU cp [1.0?] by Connectix Corp.)
  4628. CDUt (CDU cp [1.0?] by Connectix Corp.)
  4629. cGnF (CommuniGate Notifier ext [1.0] by Stalker Software, Inc.)
  4630. CiCN (Color ICON Mania cp [1.0] by Yosuke Suzuki)
  4631. cLib (???)
  4632. Copl (Aaron ext [1.0] by Greg Landweber)
  4633.      NOTE: See also 'Aarn', 'Aarp' and 'Aaru' in this section.
  4634.  
  4635. CPPf (Power To Go cp [2.0?] by AlSoft, Inc.)
  4636. cPPP (PPP mdev [2.5?], part of MacPPP by Merit Network, Inc. and the
  4637.       University of Michigan)
  4638. Cut! (Desktop Shortcut cp [1.0], part of Aladdin Desktop Tools
  4639.                                  by Aladdin Systems
  4640. d2FM (d2 FM radio ext? ? [1.0?] by d2)
  4641. DanS (PowerClick cp [1.0] by Daniel A. Segel)
  4642. Day* (PowerCentral cp [1.3?] by DayStar Digital, Inc.)
  4643.      Returns 0xFFFF FFFF when no card is installed?
  4644.  
  4645.      NOTE: The * is actually the option-8 character (0xA5).
  4646.  
  4647. Dbug (???)
  4648. DCDt (NoDesktopCleanup cp [1.0?] by Alessandro Levi Montalcini)
  4649. DCKc (Keys! cp [1.0] by Stefan Kurth)
  4650.      NOTE: The lowercase c is actually the control-q (Command key sign)
  4651.      character (0x11).
  4652.  
  4653. DD37 (DiskDoubler [3.7] by Fifth Generation Systems, Inc.)
  4654. DDAD (AutoDoubler cp [1.0?] by Symantec Corp.)
  4655.  
  4656.      NOTE: See also 'DDAE' and 'DDNF'
  4657.  
  4658. DDAE (AutoDoubler cp [1.0?] by Symantec Corp.)
  4659.  
  4660.      NOTES:
  4661.      Installed by a special version of the software instead of the 'DDAD'
  4662.      selector. Perhaps a special version with limited distribution to
  4663.      software vendors for working with the Autodoubler Internal (resource)
  4664.      Compressor. (Anonymous 'Fig')
  4665.  
  4666.      See also 'DDAD' and 'DDNF'.
  4667.  
  4668. DDCD (CopyDoubler cp [2.0.4?] by Symantec Corp.)
  4669. DDJ4 (???)
  4670. DDJB (???)
  4671. DDNF (AutoDoubler cp [1.0?] by Symantec Corp.)
  4672.  
  4673.      NOTE: See also 'DDAD' and 'DDAE'.
  4674.  
  4675. DFlh (DiskFlash cp [1.0], part of ALSoft Power Utilities by ALSoft, Inc.)
  4676. dkTU (Desktop Tuneup ext [2.0.1?] part of upgrade for ScreenScapes products
  4677.       by KiwiSoft)
  4678. DlgV (Dialog View cp [2.11], formerly List Font cp by James W. Walker)
  4679.      See also 'LFnt'.
  4680.  
  4681. DPin (Screen Posters ext [3.0?] by Berkley Systems)
  4682. Dpth (DepthMaster cp [1.0] by Victor Tan)
  4683. DBPR (DATEBOOK PRO Extension ext [2.0.1?] by Aldus Corporation, now Adobe)
  4684.      Returns data about the current reminder? GDEF is called with 'SvA4'
  4685.      selector to initialize data inside the GDEF. (Rene Ros)
  4686.  
  4687. DWG! (Volume Menu cp [1.0] by David Gladstone, Chris Burns, Julian Harris)
  4688. EDCN (PPPReport cp [1.0b3?] by Eric de la Musse)
  4689. EgGP (Eagle ext [1.5?] part of Apollo [1.2?] by Jeremy Roussak)
  4690. ESCa (Escapade cp [1.0?] by Christopher R. Wysocki)
  4691. ESOC (Serial of Champions ext [???] by Mike Throckmorton)
  4692. Extn (Now Startup Manager cp [4.0?], part of Now Utilities by Now Software)
  4693. FCDV (RAMGauge cp [1.3?] by Syzygy Cult.)
  4694.  
  4695.      NOTE: The C is actually the option-shift-c character (0x82).
  4696.  
  4697. ffEx (???)
  4698. Ffpu (PowerFPU cp [1.0.1?] by John Neil & Associates)
  4699. FI01 (???)
  4700. Fie  (Icon7 ext [???] by Inline Designs)
  4701.      gestaltIcon7?
  4702.  
  4703. fPth (FinderPaths cp? [???])
  4704.  
  4705.      NOTE: The f is actually the option-f character (0xC4).
  4706.  
  4707. fmci (FinderMenu INIT ext [1.0], part of UserLand's Frontier Runtime
  4708.       package)
  4709. FMnu (Now FolderMenus cp [5.0.1], part of Now Utilities by Now Software)
  4710. FtCg (FontPatchin cp [2.0?] by Keisuke Hara)
  4711. FUWi (OutTheWindow! ext [1.0] by Olivier Lebra)
  4712. FW14 (FileWave Administrator ext [2.0?], part of FileWave 2.0
  4713.       by Wave Research)
  4714. FWCP (File Tracker Controls cp [1.0] by Mark Aiken)
  4715. fWmM (Super Boomerang cp [4.0?], part of Now Utilities by Now Software)
  4716. FxMu (???)
  4717. GrEG (Greg's Buttons ext [3.1.4?] by Greg Landweber)
  4718. GtOp (MenuExtend cp [1.0], part of ALSoft Power Utilities by ALSoft, Inc.)
  4719. gV00 (PowerPort cp? [???])
  4720. gV01 (PowerPort cp? [???])
  4721. gV02 (PowerPort cp? [???])
  4722. gV03 (PowerPort cp? [???])
  4723. gV04 (PowerPort cp? [???])
  4724. gV05 (PowerPort cp? [???])
  4725. gV06 (PowerPort cp? [???])
  4726. gV07 (PowerPort cp? [???])
  4727. gV08 (PowerPort cp? [???])
  4728. gV09 (PowerPort cp? [???])
  4729. gV0A (PowerPort cp? [???])
  4730. gVDI (PowerPort cp? [???])
  4731. gVPf (???)
  4732.      NOTE: The f is actually the option-f character (0xC4).
  4733.  
  4734. GVfd (???)
  4735. GVms (???)
  4736. GVsm (Global Village Toolbox ext [2.1.4?] by Global Village Communication)
  4737. GVso (Global Village Toolbox ext [2.1.4?] by Global Village Communication)
  4738. GVsp (Global Village Toolbox ext [2.1.4?] by Global Village Communication)
  4739. GVvm (Network Modem ext ? [1.6?] by Global Village Communication)
  4740. GVvv (Network Modem ext ? [1.6?] by Global Village Communication)
  4741. He20 (Helium cp [1.0?] by Robert L. Mathews)
  4742. HEID (Incognito cp [1.0?] by Manuel Veloso)
  4743. HotK (???)
  4744. HPBG (HP Background ext [3.0?] by Hewlett-Packard Company)
  4745.      GDEF always returns value 1.
  4746. HPKb (??? external to MacSLIP [???] by Hyde Park Software)
  4747. HtLk (Reference Link ext [1.0] by James W. Walker)
  4748. IACi (QuicKeys Toolbox ext [???] by ???)
  4749. IACk (QuicKeys Toolbox ext [???] by ???)
  4750. iHnd (Invisible Hand cp [1.0] by Carl Mauer)
  4751.  
  4752.      NOTE:
  4753.      Because this cp patches the _Random trap you can use this selector to
  4754.      determine its presence and refuse to continue.
  4755.  
  4756. in++ (Inline++TSM cp [2.0?] by Hideaki Iimori)
  4757.      The response is an address to a private (??? -- some fields look like
  4758.      they may be public, but the docs are in Japanese) parameter block.
  4759.      (Marco Piovanelli)
  4760.  
  4761. Info (Desktop SpeedBoost cp [1.0], part of Aladdin Desktop Tools
  4762.                                    by Aladdin Systems)
  4763. Intj (Interjection ext [???])
  4764. JAiN (Rival cp by Inline Designs)
  4765.      gestaltRival
  4766.  
  4767.      NOTE: The i is actually the option-u/i character (0x95).
  4768.  
  4769. jbxC (???)
  4770. jGnE (PageUp/Down ext [n/a] by ???)
  4771. jsm1 (???)
  4772. JXNM (NowMenus cp [4.0?], part of Now Utilities by Now Software)
  4773. KBCF (Easy KEYS cp [1.5] by Kerry Clendinning)
  4774. KBCM (Menu Choice cp [???] by Kerry Clendinning)
  4775. kPow (???)
  4776. KQae (KQ Apple Events ext [???], part of KeyQuencer
  4777.                                  by Alessandro Levi Montalcini)
  4778. KQue (KeyQuencer cp [???], part of KeyQuencer
  4779.                            by Alessandro Levi Montalcini)
  4780. LFnt (Dialog View cp [???], formerly List Font cp by James W. Walker)
  4781.      See also 'DlgV'.
  4782.  
  4783. LLSM (SAM Intercept ext [4.0?] by Symantec?)
  4784.  
  4785.      NOTE:
  4786.      Version 4.0 of SAM from Symantec had an improperly implemented Gestalt 
  4787.      function which would cause a bus error if called. SAM 4.0 *must* be 
  4788.      removed (not turned off) or upgraded to at least version 4.0.1 which 
  4789.      was supposed to fix this problem. (Paul Cunningham, Teknosys, Inc.)
  4790.  
  4791. LNCH (Talk*Control cp [???] by 2Way Computing, Inc.)
  4792. LxRZ (Retro.SCSI? ext [2.0?], part of Retrospect by Dantz Development
  4793.       Corporation)
  4794.      (Remote? cp [2.0?], part of Retrospect by Dantz Development
  4795.       Corporation)
  4796. MAX` (PaperPort Extension ext [2.0?], part of Visioneer PaperPort
  4797.                                       by Visioneer, Inc.)
  4798.      Returns pointer to private data?
  4799.  
  4800. MAX~ (PaperPort Extension ext [2.0?], part of Visioneer PaperPort
  4801.                                       by Visioneer, Inc.)
  4802.      Returns information about the PaperPort software? Attribute bits?
  4803.  
  4804. Mgc! (Wizard INIT ext [1.0], part of Disk Wizard by Francois Pottier)
  4805. MJC& (AutoMenus II cp [???] by Michael Conrad)
  4806. Muet (Menuette cp [2.0.1?] by Tiger Software/Robert Matthews)
  4807. MV10 (TearOFF cp [???] by Bad Boys' Software)
  4808. MV20 (Speed Access ext [1.0?] by Connectix Corporation)
  4809. MrSD (???)
  4810. nOAg (??? cp [1.2?], part of netOctopus by Pole Position)
  4811. nOAv (??? cp [1.2?], part of netOctopus by Pole Position)
  4812.      Returns version as NumVersion?
  4813.  
  4814. Ndbl (NetDoubler cp [1.2?] by Asante Technologies Inc.)
  4815. NCex (Now QuickFiler Extension ext [5.0.1], part of Now Utilities
  4816.                                             by Now Software)
  4817. NGst (NokNok cp [1.0?])
  4818. NkNk (NokNok cp [1.0?])
  4819. NTFY (TeamNotify ext [2.0?] by Team Coordination Software Inc.)
  4820. NowT (Now Toolbox ext [4.0?], part of Now Utilities by Now Software)
  4821. NWin (Now Startup Manager cp [5.0.1], part of Now Utilities
  4822.                                       by Now Software)
  4823. OLE2 (Microsoft OLE Extension ext [2.0.6?] by Microsoft Corporation)
  4824. Pax! (PaperPort cp [2.0?], part of Visioneer PaperPort by Visioneer, Inc.)
  4825. PAXC (PaperPort Extension ext [2.0?], part of Visioneer PaperPort
  4826.                                       by Visioneer, Inc.)
  4827.      Has something to do with compression?
  4828.  
  4829. PBUf (???)
  4830. PBUt (CDU cp [1.0?] by Connectix Corp.)
  4831. PopF (PopupFolder cp [???] by Inline Software)
  4832. PPPp (FreePPP cp? [2.5?] by FreePPP Group Inc.)
  4833. PrSw (???)
  4834. PRT+ (PrintAid [0.9?] by James W. Walker)
  4835. PtrP (PrintPatrol [1.0] by Randy DeRuiter and John Champion)
  4836. QkMt (SuperCache cp [2.9.4?] by Optical Access Int.)
  4837. QRef (QuickRef ext? [1.0] by Scott Bronson)
  4838. QCam (QuickCamVideo ext [1.0] by Connectix Corporation)
  4839.      (QuickCamMic ext [1.0] by Connectix Corporation)
  4840. QIC! (???)
  4841. Rem* (???)
  4842. ReSp (File Tracker Controls cp [1.0] by Mark Aiken)
  4843. RO40 (??? [???] by ???)
  4844.      DiskCopy 6.0 checks for this selector.
  4845.  
  4846.      NOTE: Selector is (OSType) 0x5285 3430.
  4847.  
  4848. RQDC (DropCheck cp [???] by Ronald B. Queloz)
  4849. SCTR (FaxMonitor ext [1.6?], part of FAXcilitate by PSI)
  4850. SDIT (???)
  4851. SEcl (ScreenEclipse cp [1.0], part of ALSoft Power Utilities by
  4852.       ALSoft, Inc.)
  4853. SFun (SF Windows [1.0] by Damon Cokenias)
  4854. SFwd (Open-wide cp [3.0?] by James W. Walker)
  4855. Sibl (Sibling Rivalry ext [2.01?] by Matt Slot)
  4856.      Returns the type of patch/resource type loaded: '68K(option-8)' or
  4857.      'PPC(option-8)' ?
  4858. SLi2 (StuffIt SpaceSaver? ext [???] by Aladdin Systems, Inc.)
  4859. SLi3 (StuffIt SpaceSaver? ext [4.0?] by Aladdin Systems, Inc.)
  4860. SLip (StuffIt SpaceSaver? ext [4.0?] by Aladdin Systems, Inc.)
  4861. SLIP (???)
  4862. SLP1 (SLIP Extension [???] part of MacSLIP by Hyde Park Software)
  4863. sMon (StuffIt SpaceSaver? ext [???] by Aladdin Systems, Inc.)
  4864. SPLO (SpigotVDIG ext [1.0] by SuperMac Technology)
  4865. SSpe (Serial Enabler cp [1.0?] by Markus Fritze)
  4866. ST20 (Snap-To cp [2.0?] by Trevden Sherzell)
  4867. STM2 (Stacker Removable Extension ext [2.0?] by Stac Electronics)
  4868. STYH (StayHere! cp [2.0?] by Nobuhiro Miyatake)
  4869. TapT (TappyType cp [2.0?] by Colin Klipsch)
  4870. TFI1 (True Finder Integration? cp? [???] by Aladdin Systems, Inc.)
  4871. TFI2 (True Finder Integration? cp? [???] by Aladdin Systems, Inc.)
  4872. TFI3 (True Finder Integration? cp? [???] by Aladdin Systems, Inc.)
  4873. TFI4 (True Finder Integration? cp? [???] by Aladdin Systems, Inc.)
  4874. TgrX (Xmas Lights cp [1.0] by Tiger Technologies)
  4875. Tmon (TMON Pro cp? [3.0] by ICOM Simulations)
  4876. TRNS (Transporter ext [???], part of SAM administrator)
  4877.  
  4878.      NOTE:
  4879.      Not sure why, but calling this selector has caused many wierd
  4880.      interface problems with our application, such as scrollbars
  4881.      disappearing, and menus disabling. (Paul Cunningham, Teknosys, Inc.)
  4882.  
  4883. TslX (Grabber Settings cp [2.0?] part of Internet Arranger by CE Software)
  4884. TSM+ (TSM Fix ext [1.0] by Matt Slot)
  4885. tsmH (TSMHelper ext [???]) by Donald Brown, CE Software)
  4886. UhOh (SpeedyFinder7 Extension ext [1.5.9h], part of SpeedyFinder7
  4887.                                             by Victor Tan)
  4888. UlOn (UndelineEnabler ext [2.0?], part of FontPachin package by
  4889.       Keisuke Hara)
  4890.      See also FtCg selector.
  4891.  
  4892. URL! (CyberFinder cp [2.0] by Leonard Rosenthol and Victor Tan)
  4893. URLf (CyberFinder cp [MacHack 1995 release to 1.1] by Leonard Rosenthol
  4894.                                                    and Victor Tan)
  4895.  
  4896.      NOTE:
  4897.      CyberFinder 2.0 installs the selector 'URL!'.
  4898.  
  4899.      The f is actually the option-f character (0xC4).
  4900.  
  4901. View (StuffIt Viewer Engine [???] by Aladdin Systems Inc.)
  4902.      gestaltViewerEngine
  4903.      The gestalt selector is not installed until someone (StuffIt) invokes
  4904.      the engine.
  4905.  
  4906. vmFn (RAM Doubler [1.0] by Connectix Corporation)
  4907.      Seems to return a memory address, perhaps to a function to control
  4908.      Virtual Memory?
  4909.  
  4910.      NOTE: See 'Reports' chapter (RAMDoubler section) for more information.
  4911.  
  4912. VrkG (Virex cp? [5.5?] by Datawatch Corp.)
  4913. VrkS (Virex cp? [5.5?] by Datawatch Corp.)
  4914.  
  4915.      NOTE:
  4916.      Merely calling the 'VrkS' selector seems to trigger a quick scan
  4917.      feature of Virex, which is only supposed to be accessible by a hot key
  4918.      setup by the Virex control panel (or something like that). When this
  4919.      happens, a dialog is displayed asking the user to select a volume or
  4920.      folder to scan. (Paul Cunningham, Teknosys, Inc.)
  4921.  
  4922. VrkU (Virex cp? [5.5?] by Datawatch Corp.)
  4923. WARE (???)
  4924. WkUp (WakeUp Items cp [1.0?] by St.Clair Software)
  4925. WREO (Replace Existing Options cp [???] by Jonathon Summers)
  4926.  
  4927.      NOTE: The W is actually the option-w character (0xB7).
  4928.  
  4929. Wttf (TeachText7.0 Font ext [???] by Jonathon Summers)
  4930.  
  4931.      NOTE: The W is actually the option-w character (0xB7).
  4932.  
  4933. XAsm (Speed Emulator ext [???] part of Speed Doubler by Connectix Corporation)
  4934. xMe0 (OptiMem cp [2.0?] by Jump Dev. Group Inc.)
  4935.  
  4936.      NOTE: The 0 is a zero (0x30).
  4937.  
  4938. YaHu (Desktop SpeedBoost cp [1.0], part of Aladdin Desktop Tools
  4939.                                    by Aladdin Systems)
  4940. YAWN (Sleeper cp [1.1.4?] by St.Clair Software)
  4941. ygS  (???)
  4942.  
  4943.      NOTES:
  4944.      The y is actually option-u/y (0xD8).
  4945.      The last byte is actually the BEL ASCII code (0x07).
  4946.  
  4947. YoHo (Desktop SpeedBoost cp [1.0], part of Aladdin Desktop Tools)
  4948.                                    by Aladdin Systems)
  4949. YuHu (Desktop Makeover cp [1.0], part of Aladdin Desktop Tools)
  4950.                                  by Aladdin Systems)
  4951. Zoom (???)
  4952. *Men (OtherMenu ext [1.0] by James W. Walker)
  4953.  
  4954. Gestalt Manager Calls
  4955. =====================
  4956.  
  4957. Gestalt Manager Routines
  4958. ------------------------
  4959. (Contributions to the Inline 68K code by Lawrence D'Oliveiro and Marco
  4960. Piovanelli).
  4961.  
  4962. FUNCTION Gestalt (selector: OSType; VAR response: LongInt): OSErr;
  4963.      Available since System 6.0.4.
  4964.      Trap Macro
  4965.        _Gestalt (0xA1AD); (old ?: _GestaltDispatch 0xA0AD)
  4966.      Registers on entry   D0: selector code
  4967.      Registers on exit    A0: response
  4968.                           D0: result code
  4969.      Result codes
  4970.        noErr                       0   No error
  4971.        gestaltUnknownErr       -5550   Could not obtain the response
  4972.        gestaltUndefSelectorErr -5551   Undefined selector
  4973.      Inline 68K code
  4974.        $225F,  { move.l (sp)+, a1 }
  4975.        $201F,  { move.l (sp)+, d0 }
  4976.        $A1AD,  { _Gestalt }
  4977.        $2288,  { move.l a0, (a1) }
  4978.        $3E80;  { move.w d0, (sp) }
  4979.  
  4980. FUNCTION NewGestalt (selector: OSType; selectorfunction: ProcPtr): OSErr
  4981.      Available since System 6.0.4.
  4982.      Trap Macro
  4983.        _NewGestalt (0xA3AD)
  4984.      Registers on entry   A0: address of new selector function
  4985.                           D0: selector code
  4986.      Registers on exit    D0: result code
  4987.      Result codes
  4988.        noErr                       0   No error
  4989.        memFullErr               -108   Ran out of memory
  4990.        gestaltDupSelectorErr   -5552   Selector already exists
  4991.        gestaltLocationErr      -5553   Function not in system heap
  4992.      Inline 68K code
  4993.        $205F,  { move.l (sp)+, a0 }
  4994.        $201F,  { move.l (sp)+, d0 }
  4995.        $A3AD,  { _NewGestalt }
  4996.        $3E80;  { move.w d0, (sp) }
  4997.  
  4998. FUNCTION ReplaceGestalt (selector: OSType; selectorfunction: ProcPtr;
  4999.                          VAR oldGestaltFunction: ProcPtr): OSErr;
  5000.      Available since System 6.0.4.
  5001.      Trap Macro 
  5002.        _ReplaceGestalt (0xA5AD)
  5003.      Registers on entry   A0: address of new selector function
  5004.                           D0: selector code
  5005.      Registers on exit    A0: address of old selector function
  5006.                           D0: result code
  5007.      Result codes
  5008.        noErr                       0   No error
  5009.        gestaltUndefSelectorErr -5551   Undefined selector
  5010.        gestaltLocationErr      -5553   Function not in system heap
  5011.      Inline 68K code
  5012.        $225F,  { move.l (sp)+, a1 }
  5013.        $205F,  { move.l (sp)+, a0 }
  5014.        $201F,  { move.l (sp)+, d0 }
  5015.        $A5AD,  { _ReplaceGestalt }
  5016.        $2288,  { move.l a0, (a1) }
  5017.        $3E80;  { move.w d0, (sp) }
  5018.  
  5019. Gestalt Value Routines
  5020. ----------------------
  5021. Please note the GestaltValue routines can be invoked through a library,
  5022. but since System 7.5 the GestaltValue routines are also part of the OS.
  5023. The GestaltValue routines are stack based and don't use registers.
  5024. The GestaltValue library first checks to see if trap 0xABF1 is implemented
  5025. (System 7.5 and later). If trap 0xABF1 is implemented, all calls to the
  5026. library are routed to this trap, otherwise the library uses embedded code.
  5027. Several Apple System selectors use the GestaltValueDispatch A-trap to
  5028. install the response value starting with System 7.5.
  5029.  
  5030. WARNING:
  5031. The GestaltValue library distributed originally checks for the wrong trap
  5032. (_ThreadDispatch, 0xABF2). Make sure your software doesn't crash when this
  5033. trap is installed.
  5034. (Most info about the GestaltValue functions was provided by
  5035. Marco Piovanelli and Dave Radcliffe).
  5036.  
  5037. FUNCTION NewGestaltValue (selector: OSType; newValue: LongInt): OSErr;
  5038.      Available as library and since System 7.5.
  5039.      Trap Macro                        Selector
  5040.        _GestaltValueDispatch (0xABF1)  0x0401
  5041.      Result codes
  5042.        noErr                       0   No error
  5043.        unimpErr                   -4   Unimplemented core routine
  5044.        memFullErr               -108   Ran out of memory
  5045.        (and other memory errors)
  5046.        gestaltDupSelectorErr   -5552   Selector already exists
  5047.      Inline 68K code
  5048.        $303C, $0401, $ABF1;
  5049.  
  5050. FUNCTION ReplaceGestaltValue (selector: OSType;
  5051.                               replacementValue: LongInt): OSErr;
  5052.      Available as library and since System 7.5.
  5053.      Trap Macro                        Selector
  5054.        _GestaltValueDispatch (0xABF1)  0x0402
  5055.      Result codes
  5056.        noErr                       0   No error
  5057.        unimpErr                   -4   Unimplemented core routine
  5058.        memFullErr               -108   Ran out of memory
  5059.        (and other memory errors)
  5060.        gestaltUndefSelectorErr -5551   Undefined selector
  5061.      Inline 68 K code
  5062.        $303C, $0402, $ABF1;
  5063.  
  5064. FUNCTION DeleteGestaltValue (selector: OSType): OSErr; and
  5065. FUNCTION Delete (selector: OSType): OSErr;
  5066.      Available as library and since System 7.5.
  5067.      Trap Macro                        Selector
  5068.        _GestaltValueDispatch (0xABF1)  0x0203
  5069.      Result codes
  5070.        noErr                       0   No error
  5071.        unimpErr                   -4   Unimplemented core routine
  5072.        gestaltUndefSelectorErr -5551   Undefined selector
  5073.      Inline 68K code
  5074.        $303C, $0203, $ABF1;
  5075.  
  5076. Undocumented Gestalt Manager Routines
  5077. -------------------------------------
  5078. FUNCTION? GetGestaltProcPtr? (selector?: OSType;
  5079.                               var selectorfunction: ProcPtr): OSErr;?
  5080.      Trap Macro
  5081.        _GetGestaltProcPtr (0xA7AD)
  5082.      Registers on entry   D0: selector code?
  5083.      Registers on exit    ??: address of selector function
  5084.      Result codes
  5085.        noErr                       0   No error
  5086.        ???
  5087.  
  5088.      NOTE:
  5089.      Found in the MPW Traps Interface file on 'Bookmark CD 14'.
  5090.      Available since System 6.0.4 but code will always return error -50
  5091.      (paramErr). (Lawrence D'Oliveiro, Rene Ros)
  5092.  
  5093. FUNCTION SetGestaltValue (selector: OSType; newValue: LongInt): OSErr;
  5094.      Available since System 7.5?
  5095.      Trap Macro                        Selector
  5096.        _GestaltValueDispatch (0xABF1)  0x0404
  5097.      Result codes
  5098.        noErr                       0   No error
  5099.        ???
  5100.  
  5101. extern  pascal OSErr GetGestaltSelectors(UInt32 theCount,
  5102.                                          UInt32 skipCount,
  5103.                                          GestaltIterator *theItems);
  5104.      Available starting with Copland?
  5105.      Trap Macro                        Selector
  5106.        ???                             ???
  5107.      Result codes
  5108.        noErr                       0   No error
  5109.        ???
  5110.  
  5111.      struct GestaltIterator {
  5112.          UInt32   totalItems;
  5113.          UInt32   validItems;
  5114.          UInt32   iterationKey;
  5115.          OSType   theItems[1];
  5116.      };
  5117.      typedef struct GestaltIterator GestaltIterator;
  5118.  
  5119. Custom Routines
  5120. ---------------
  5121. This section lists functions which expand some Gestalt functions using
  5122. inline assemly code.
  5123.  
  5124. FUNCTION GestaltSelectorZero (Selector: OSType): LongInt;
  5125. {returns the value of the specified Gestalt selector,}
  5126. {or zero if unknown.}
  5127.      Inline 68K code
  5128.        $201F,  { move.l (sp)+, d0 }
  5129.        $A1AD,  { _Gestalt }
  5130.        $6702,  { beq.s @2 }
  5131.        $91C8,  { sub.l a0, a0 }
  5132.        $2E88;  { @2: move.l a0, (sp) }
  5133.      Description:
  5134.        With all the selectors that are supposed to return non-zero values
  5135.        if installed, it may be helpful to have an utility routine that
  5136.        returns a zero value (instead of an error) if a selector isn't
  5137.        installed. It's short and sweet because it makes a direct call to
  5138.        the _Gestalt trap; of course this means you can't use it on systems
  5139.        earlier than 6.0.4. (Contributed by Lawrence D'Oliveiro)
  5140.  
  5141. FUNCTION GestaltBitTest(Selector: OSType; BitNr: Integer): Boolean;
  5142.      Inline 68K code
  5143.        $321F,  { move.w (sp)+, d1 }
  5144.        $201F,  { move.l (sp)+, d0 }
  5145.        $A1AD,  { _Gestalt }
  5146.        $6702,  { beq.s @2 }
  5147.        $91C8,  { sub.l a0, a0 }
  5148.        $2008,  { @2: move.l a0, d0 }
  5149.        $0300,  { btst d1, d0 }
  5150.        $56C0,  { sne.b d0 }
  5151.        $4400,  { neg.b d0 }
  5152.        $1E80;  { move.b d0, (sp) }
  5153.      Description
  5154.        The GestaltBitTest is a piece of inline assembly code which tests if
  5155.        the specified bit is set in the value from the specified Gestalt
  5156.        selector (false if the Gestalt call returns an error). Example:
  5157.        GestaltBitTest(gestaltAppleEventsAttr, gestaltAppleEventsPresent)
  5158.        (Contributed by Lawrence D'Oliveiro)
  5159.  
  5160. FUNCTION CallGestaltDEF (selector: OSType;
  5161.                          var result: LongInt;
  5162.                          aRoutine: ProcPtr): OSErr;
  5163.     inline $205F, $4E90;
  5164.        { move.l (sp)+, a0 }
  5165.        { jsr (a0) }
  5166.      Description
  5167.        Suppose you have just loaded an GDEF resource, or replaced one and
  5168.        keep the original around and store a pointer to it somewhere
  5169.        private. Suppose next, you want to call it to obtain a response
  5170.        without using yet another selector.
  5171.        That's what the this function is useful for. Just pass it the usual
  5172.        selector and result parameters but also a pointer to the GDEF
  5173.        (Lock it if it's a relocatable block).
  5174.  
  5175. Reports
  5176. =======
  5177. When someone reports some findings involving several selectors and/or a
  5178. report is too long to include with the selector entry above, that report
  5179. is listed here. They should be as short as possible with the maximum
  5180. amount of information.
  5181.  
  5182. Accessing the Gestalt Manager
  5183. -----------------------------
  5184. (by Rene Ros)
  5185.  
  5186. Several applications can use additional code to expand their capabilities
  5187. and using this they may be able to access the Gestalt Manager. The software
  5188. listed below are additional code providing access to the Gestalt Manager.
  5189.  
  5190. Only a few locations are listed here, use the filename to search for other
  5191. locations. And use the nearest mirror site of FTP sites.
  5192.  
  5193. CheckGestaltFor (Neil Shulman)
  5194.      Hypercard external to access the Gestalt Manager.
  5195.  
  5196.      ftp://sumex-aim.stanford.edu/info-mac/card/check-gestalt-for-xcmd.hqx
  5197.  
  5198. Gestalt Pro 1.1.2 (Rene G.A. Ros)
  5199.      External for 4TH Dimension Relational Database application from
  5200.      ACI/ACI US.
  5201.  
  5202.      ftp://sumex-aim.stanford.edu/info-mac/dev/a4d/ext/gestalt-pro-112.hqx
  5203.  
  5204. Gestalt XFCN 3.2.1 (Jeff Iverson)
  5205.      Hypercard XFCN to query the Gestalt Manager.
  5206.  
  5207.      ftp://sumex-aim.stanford.edu/info-mac/card/gestalt-321.hqx
  5208.  
  5209. GestaltExt (Andre Cavegn)
  5210.      External for 4TH Dimension Relational Database application from
  5211.      ACI/ACI US.
  5212.  
  5213.      ftp://sumex-aim.stanford.edu/info-mac/dev/a4d/ext/gestalt-ext.hqx
  5214.  
  5215. Get Gestalt (AppleScript addition) 1.2 by Mark Alldritt
  5216.      Provides access to the Gestalt Manager for AppleScript scripts.
  5217.  
  5218.      ftp://gaea.kgs.ukans.edu/applescript/osaxen/script-tools-131-as.hqx
  5219.  
  5220. Informant XFCN 1.0 (Jeff Iverson)
  5221.      Hypercard XFCN to query the Gestalt Manager.
  5222.  
  5223.      ftp://sumex-aim.stanford.edu/info-mac/card/information-10-xfcn-demo.hqx
  5224.  
  5225. AppleShare File & Print Server selector codes
  5226. ---------------------------------------------
  5227. (by Rene Ros)
  5228.  
  5229. The selectors are defined when the application has run. If it is still
  5230. running (or wasn't properly quit) the response is one. When the application
  5231. has properly quit the response is zero.
  5232.      admn AppleShare Admin
  5233.      asps AppleShare Print Server
  5234.      hgfd AppleShare File Server
  5235. (these three are undocumented)
  5236.  
  5237. AppleTalk
  5238. ---------
  5239. (by Rene Ros)
  5240.  
  5241. With the release of the System 7 Tuner product, AppleTalk will not be
  5242. loaded at startup, if prior to the previous shutdown AppleTalk was turned
  5243. off in the Chooser. Under this circumstance, the 'atkv' selector is not
  5244. available. If the 'atkv' selector is not available under System 7, this is
  5245. an indicator that AppleTalk cannot be turned on without doing so in the
  5246. Chooser and rebooting the system. &AT02
  5247.  
  5248. Clock Chipped
  5249. -------------
  5250. (provided by Marc Schrier with additional information from Jeff Baudin and
  5251.  Mike Cohen and edited by Rene Ros)
  5252.  
  5253. Several Macintosh computers have been observed to return a different
  5254. machine type value (using the gestaltMachineType selector) when the
  5255. clock speed was changed. Mainly Power Macintosh computers behave like
  5256. this. The following tables provide an overview of these values.
  5257.  
  5258. In addition to clock chipping a Macintosh, you can also:
  5259. - swap a resistor in a Centris 650 to make it a Quadra 650;
  5260. - remove jumper J18 of a Quadra 605 and it becomes a LC475.
  5261. - install jumper J18 on a LC475 and it becomes a Quadra 605.
  5262. - install and remove resistors and jumpers from the Wombat motherboard
  5263.   used in the Centris 650, Quadra 650 and Quadra 800 to switch between
  5264.   those three computers and two new, unreleased machines.
  5265. - remove the LED jumper from a PM 7500 and it becomes a PM 8500.
  5266.  
  5267. ===========================================================================
  5268. Machine Type values returned by clock-chipped M680x0 computers
  5269. ===========================================================================
  5270. Model Name      CPU Speed (MHz)
  5271.                  20   25   33
  5272. ---------------------------------------------------------------------------
  5273. LC III                27-  62
  5274. Q605%            93!  94-  95!
  5275. LC475%           86!  89-  90!
  5276. LC575            87!  91!  92-
  5277. ---------------------------------------------------------------------------
  5278. - value returned when unmodified
  5279. ! value not belonging to any known, released computer
  5280. % if you remove jumper J18 from a Q605 it becomes a LC475
  5281. ---------------------------------------------------------------------------
  5282.  
  5283.  
  5284. ===========================================================================
  5285. Machine Type values returned by clock-chipped PowerPC computers
  5286. ===========================================================================
  5287. Model Name      CPU Speed (MHz)
  5288.                  60   66.6 75   80   82   90  100   110   112   120
  5289. ---------------------------------------------------------------------------
  5290. PM 6100/60(AV)   75- 100       101!
  5291. PM 6100/66(AV)   75  100-      101!
  5292. PM 7100/66(AV)  111! 112-      113! 114!
  5293. PM 7100/80(AV)       112        47-
  5294. PM 8100/80(AV)   61!  64!       65-
  5295. PM 8100/100(AV)                 65             55-   40          12!
  5296. PM 8100/110(AV)                 65             55    40-         12!
  5297. Power100#                  65             55   55-         12!
  5298. ---------------------------------------------------------------------------
  5299. - value returned when unmodified
  5300. ! value not belonging to any known, released computer
  5301. # Macintosh clone by Power Computing
  5302. ---------------------------------------------------------------------------
  5303.  
  5304.  
  5305. ===========================================================================
  5306. Machine Type values returned by modifying the Wombat motherboard
  5307. ===========================================================================
  5308. Architecture   Jumper   No Resistors   Resistor R151   Resistor R152
  5309. ---------------------------------------------------------------------------
  5310. M68040         No        51!            30  C650        36  Q650
  5311.                Yes       59!            30  C650        35  Q800
  5312. PPC PDS Card   No       123  PM 800    120  PM C650    122  PM Q650
  5313.                Yes      N/A            120  PM C650    123  PM 800
  5314. ---------------------------------------------------------------------------
  5315. ! value not belonging to any known, released computer
  5316. ---------------------------------------------------------------------------
  5317.  
  5318. For more info on clock-chipping (or otherwise modifying) Macintosh
  5319. computers:
  5320. http://bambam.cchem.berkeley.edu/~schrier/mhz.html
  5321.  
  5322. Copland
  5323. -------
  5324. (provided by Anonymous contributor, edited by Rene Ros)
  5325.  
  5326. To have the new microkernel, implemented by Copland, not depend on the
  5327. system registry or Gestalt a system call is provided instead:
  5328.  
  5329. enum
  5330. {
  5331.     kSystemInformationVersion = 0
  5332. };
  5333.  
  5334. typedef struct SystemInformation
  5335. {
  5336.     ItemCount    numPhysicalRAMPages;
  5337.     ByteCount    pageSize;
  5338.     ByteCount    dataCacheBlockSize;
  5339.     UInt32       processorVersionNumber;
  5340.     UInt32       numCPUs;
  5341.     ProcessID    kernelProcessID;
  5342. };
  5343.  
  5344. OSStatus GetSystemInformation (PBVersion              theVersion,
  5345.                                SystemInformation *    theSystemInfo);
  5346.  
  5347. Undoubtely Gestalt itself will use this call to return the information
  5348. too.
  5349.  
  5350. For more reading:
  5351.     MicroKernel White Paper
  5352.  
  5353. Copy protection using Gestalt
  5354. -----------------------------
  5355. (by Rene Ros)
  5356.  
  5357. In D e v e l o p 17 Brigham Stevens suggests to use Gestalt and FindFolder
  5358. as a way to implement copy protection in the most compatible way possible.
  5359. By determining several characteristics at installation from the Gestalt Mgr
  5360. and the DirID of the System Folder with FindFolder you can check for this
  5361. info later. When is has changed you can then ask for the serial number
  5362. or a password again.
  5363.  
  5364. Environs & SysEnvirons
  5365. ----------------------
  5366. (by Rene Ros)
  5367.  
  5368. Using Macsbug it is very easy to determine that the SysEnvirons function
  5369. uses the Gestalt Manager to fill the fields of the system environment
  5370. record. So, when you install your own gestalt definitions by using the
  5371. ReplaceGestalt function this will also change the information returned
  5372. by SysEnvirons.
  5373. The older Environs function doesn't use the Gestalt Mgr and the code
  5374. looks only at two values in ROM (the machine box flag and ROM version).
  5375.  
  5376. Executor Mac-emulator
  5377. ---------------------
  5378. (by Rene Ros)
  5379.  
  5380. Executor is a Macintosh Emulator for DOS machines, published by
  5381. Abacus Research and Development, Inc. (1993/1994). The Gestalt Manager is
  5382. also emulated and the version I have seen (on a 486DX) says it's a MacPlus
  5383. with a 68LC040 processor with MMU. The 'sysv' selector returns 0x607 but
  5384. it also lists a lot of selectors usually not installed by 6.0.7. Like
  5385. the 'edtn' and 'stdf' selectors. For those it then simply returns zero.
  5386. Strangely enough the 'tabl' selector is not installed, but this doesn't
  5387. confuse the Gestalt! application!
  5388.  
  5389. Gestalt Apple Event
  5390. -------------------
  5391. (by John W. Baxter)
  5392.  
  5393. The scriptable Finder, implemented by the Finder Scripting Extension,
  5394. provides an Apple event to query the Gestalt Manager. This can be used from
  5395. AppleScript using the 'computer' command.
  5396. And using the PPC Toolbox this now also means you can query a remote
  5397. computer, provided the Finder Scripting Extension is installed.
  5398. The Finder Scripting Extension is installed with System 7.5 (which also
  5399. includes Finder 7.1.4) but can also be used with Finder 7.1.3. The
  5400. extension will later be rolled into the Finder.
  5401.  
  5402. The direct parameter for this event is a Gestalt selector code. If this is
  5403. the only parameter, the result is the result of calling Gestalt with that
  5404. code.
  5405.  
  5406. An optional second parameter can be included, in which case it is a 32 bit
  5407. number against which the result of calling Gestalt with the given selector
  5408. is tested. When this parameter is present, the event returns true if all
  5409. bits set in the optional parameter are set in the result from Gestalt, and
  5410. false otherwise. In AppleScript, when telling Finder:
  5411.      computer "os  " has 3
  5412. returns true if the low-order two bits are set in the result from Gestalt.
  5413. The equivalent event built "by hand" would be addressed to Finder (on the
  5414. machine of interest) and would have the parameters
  5415.      key        value      type
  5416.      '----'     'os  '     typeType        (alternative:  "os  "  typeChar)
  5417.      'has '     3          typeLongInteger ('has ' is keyASPrepositionHas)
  5418.  
  5419. The event class would be kAEFinderSuite ('fndr'), and the event ID would be
  5420. kAEGestalt ('gstl').
  5421.  
  5422. For more reading:
  5423.     D e v e l o p Magazine, Issue 20. "Scripting the Finder from your
  5424.           Application" by Greg Anderson, page 65.
  5425.     Finder Suite documentation available (starting in March 1995) on the
  5426.           Developer CD Series (Reference) as
  5427.           :Technical Documentation:Apple Events Registry & Suites:
  5428.            AE Suite Finder:Finder Suite
  5429.  
  5430. Gestalt Applications
  5431. --------------------
  5432. (by Rene Ros)
  5433.  
  5434. Several specialized applications are available to display all installed
  5435. Gestalt selectors. And several other applications heavily depend on the
  5436. Gestalt Manager to show information on hardware and software.
  5437.  
  5438. Only a few locations are listed here, use the filename to search for other
  5439. locations. And use the nearest mirror site of FTP sites.
  5440.  
  5441. Apple System Profiler (Apple Computer Inc.)
  5442.      The first released version (1.0, initially labeled 3.5?) works only
  5443.      with System 7.5.2 and 7.5.3 with these Macintosh models:
  5444.        Power Macintosh 61xx, 7100, 7200, 7500, 8100, 8500, 9500;
  5445.        Performa 5200, 5300, 6200, 63xx;
  5446.        PowerBook 190, 2300, 5300.
  5447.      Version 1.0.1 adds support for:
  5448.        Power Macintosh 5200, 5300, 5400, 7600
  5449.        Performa 6100
  5450.  
  5451.      ftp://ftp.info.euro.apple.com/Apple.Support.Area/Apple.Software.Updates/US/Macintosh/Utilities/System_Profiler_1.0.1.sea.hqx
  5452.  
  5453. DisplayGestalt (Craig Marciniak)
  5454.      Small application displays configuration using Gestalt Mgr, includes
  5455.      C-source.
  5456.  
  5457.      ftp://mac.archive.umich.edu/development/libraries/displaygestalt.cpt.hqx
  5458.  
  5459. Gestalt.Appl 2.7 (Jean-Pierre Curcio)
  5460.      Displays responses from installed selectors and information about the
  5461.      returned responses.
  5462.      THIS IS THE 'OFFICIAL' GESTALT HUNTERS TOOL! Please send saved config
  5463.      files from Gestalt.Appl to the editor.
  5464.  
  5465.      ftp://sumex-aim.stanford.edu/info-mac/cfg/gestalt-appl-27.hqx
  5466.      http://www.bio.vu.nl/home/rgaros/gestalt/gestalt-appl.sit.hqx
  5467.  
  5468.      Contact: Jean-Pierre Curcio (JPC83@calvacom.fr)
  5469.  
  5470. Gestalt! 3.0 (Roland Mansson)
  5471.      Displays responses from installed selectors.
  5472.  
  5473.      ftp://ftp.lu.se/pub/mac/util/gestalt300.cpt.hqx
  5474.      ftp://sumex-aim.stanford.edu/info-mac/cfg/gestalt-300.hqx
  5475.  
  5476.      Contact: Roland Mansson (roland.mansson@ldc.lu.se)
  5477.  
  5478. GestaltDA 0.4 (Carl C. Hewitt, Apple Computer Inc.)
  5479.      Displays responses from installed selectors.
  5480.  
  5481.      ftp://ftp.info.euro.apple.com/Apple.Support.Area/Developer_Services/Tool_Chest/OS_Utilities/GestaltDA_0.4.sit.hqx
  5482.  
  5483.      Contact: D e v e l o p (dev.subs@applelink.apple.com)
  5484.  
  5485. Gestalt Environment 7
  5486.      Application to list a number of installed selectors.
  5487.  
  5488.      mailto:gestalt-selectors-list-request@bio.vu.nl
  5489.             'archive get software/ge7.hqx'
  5490.  
  5491. Go Gestalt appl 1.5 (Paul Reznick)
  5492.      Displays information obtained thru the Gestalt Mgr. 
  5493.  
  5494.      mailto:gestalt-selectors-list-request@bio.vu.nl
  5495.             'archive get software/go-gestalt-15.sit.hqx'
  5496.  
  5497.      Contact: Paul Reznick (PRzeznik@aol.com)
  5498.  
  5499. Tattle-Tech appl (Decision Makers Software, Inc.)
  5500.      Uses Gestalt manager extensively to display all known information.
  5501.  
  5502.      ftp://sumex-aim.stanford.edu/info-mac/cfg/tattle-tech-22.hqx
  5503.  
  5504.      Contact: John Mancino (mancino@decismkr.com)
  5505.  
  5506. TechTool appl 1.0.8 (Micromat Computer Systems)
  5507.      Application to reset PRAM, rebuild DTDB and show Gestalt info.
  5508.  
  5509.      ftp://sumex-aim.stanford.edu/info-mac/cfg/tech-tool-108.hqx
  5510.  
  5511. GestaltValue
  5512. ------------
  5513. (by Marco Piovanelli, addition by Rene Ros)
  5514.  
  5515. The first time you call NewGestaltValue, the library installs two non-
  5516. relocatable blocks in the system heap and the 'gval' gestalt selector. One
  5517. of the blocks is filled with code: it's actually a gestalt definition that
  5518. implements GestaltValue's shared mechanism. The second block contains the
  5519. selectors and values GestaltValue manages. The response returned by the
  5520. 'gval' selector is a pointer to the second non-relocatable block in the
  5521. system heap.
  5522.  
  5523. Dave Radcliffe wrote on 23 March 1993 regarding some information, about the
  5524. GestalValue glue code, listed with version 1.4 of this list:
  5525. ---------------------------------------------------------------------------
  5526. The information on the _GestaltValue trap (0xABF2) is correct based on the
  5527. glue, but because of a mistake on my part, the glue should be checking for
  5528. 0xABF1. A new version of the glue is being distributed on the developer CD
  5529. next month...
  5530. ---------------------------------------------------------------------------
  5531.  
  5532. The GestaltValue library can be found at:
  5533.      ftp://sumex-aim.stanford.edu/info-mac/dev/gestalt-value-lib.hqx
  5534.      ftp://ftp.info.euro.apple.com/Apple.Support.Area/Developer_Services/Tool_Chest/OS_Utilities/GestaltValue.sit.hqx
  5535.  
  5536. GestaltValue & CodeWarrior Problem
  5537. ----------------------------------
  5538. (by Francois Pottier)
  5539.  
  5540. The GestaltValue.o library is made up of several routines. The first time
  5541. someone calls a routine from the library, the library installs itself into
  5542. the System Heap and uses NSetTrapAddress to set up its own trap. Subsequent
  5543. calls to the library will just map to a trap call. This allows the code to
  5544. be loaded only once in memory, even if several INITs use GestaltValue.
  5545.  
  5546. What's the problem? In order to install itself into the System Heap, the
  5547. GestaltValue code must compute how big it is; it does this by subtracting
  5548. the address of the first routine from the address of a stub routine located
  5549. after the last real routine. That's common practice. It assumes, however,
  5550. that the linker will preserve the order of the routines.
  5551.  
  5552. But CodeWarrior's "Import MPW library" command does not preserve the order
  5553. of the functions it finds inside the .o file. As a result, when you call
  5554. NewGestaltValue for the first time, the library finds its own size to be
  5555. negative. It asks the Memory Manager for a block of negative size and
  5556. returns an error (memFullErr, I believe).
  5557.  
  5558. Note that this only happens if your software is the first to call
  5559. GestaltValue since the machine started up. Also, it won't happen
  5560. under System 7.5 because GestaltValue is part of 7.5. If your program
  5561. requires 7.5, you probably don't need the GestaltValue.o glue at all.
  5562.  
  5563. Glue code
  5564. ---------
  5565. (by Rene Ros, based on THINK Reference 2.0)
  5566.  
  5567. These development/compiler software contain glue-code to handle a few
  5568. selectors even when the Gestalt Manager is not available.
  5569.  
  5570.      THINK C      (5.0 and later)
  5571.      THINK Pascal (4.0 and later)
  5572.      MPW          (3.2 and later)
  5573.  
  5574. The following selectors can be handled by the glue-code, with all others
  5575. an error (gestaltUndefSelectorErr) will be returned.
  5576.  
  5577.      gestaltAppleTalkVersion = 'atlk';
  5578.      gestaltFPUType          = 'fpu ';
  5579.      gestaltKeyboardType     = 'kbd ';
  5580.      gestaltLogicalRAMSize   = 'lram';
  5581.      gestaltMachineType      = 'mach';
  5582.      gestaltMMUType          = 'mmu ';
  5583.      gestaltPhysicalRAMSize  = 'ram ';
  5584.      gestaltProcessorType    = 'proc';
  5585.      gestaltQuickdrawVersion = 'qd  ';
  5586.      gestaltSystemVersion    = 'sysv';
  5587.      gestaltVersion          = 'vers';
  5588.  
  5589. Unless you are using direct calls, ofcourse.
  5590.  
  5591. INITGestalt standard
  5592. --------------------
  5593. (by Rene Ros, based on INITGestalt proposal by Jeremy Roussak and Rene Ros)
  5594.  
  5595. IMPORTANT NOTE:
  5596. We, Jeremy Roussak and Rene Ros, will not work on new versions of this
  5597. proposed standard. Apart from not having the time to work on it we found
  5598. that it was not supported sufficiently by the programmers community.
  5599. Perhaps because it was not backwards compatible with existing software.
  5600. Also, we are worried by the yet unknown impact of memory protection of
  5601. Copland (System 8?) on the way of 'memory sharing' used by INITGestalt.
  5602.  
  5603. The INITGestalt proposal tried to define a standard memory structure which
  5604. describes the basic information about software. Using the Gestalt call
  5605. other software obtains a pointer to the structure for software which uses
  5606. the INITGestalt standard.
  5607.  
  5608. You can obtain the latest, and last, version of the INITGestalt proposal by
  5609. sending an email, with subject 'archive get init-gestalt*', to
  5610.      gestalt-selectors-list-request@bio.vu.nl
  5611.  
  5612. Machine Names
  5613. -------------
  5614. (by Rene Ros et al.)
  5615.  
  5616. The STR# resource with ID -16395, inside the system file or enabler,
  5617. contains a list of Macintosh machine names. The selector
  5618. gestaltMachineType ('mach') returns a value which can be used as the index
  5619. value with a GetIndString call to get the appropriate machine name. There
  5620. are some exceptions to this and these are discussed in this report.
  5621.  
  5622. On Macintosh Performas (System 7.1), the Machine Name STR# resource will
  5623. always return the string "Macintosh" (not "Macintosh Performa 450" or
  5624. "Performa 450").  On all other Macintoshes, the string will return the
  5625. correct name. (Mark Dawson)
  5626. [And] if you do a dirty install [of System 7.5 or later] (right on top of
  5627. an existing, pre-7.5 System), your machine type and icon will be preserved.
  5628. If you do a clean install, you'll get the generic name/icon in the
  5629. Finder's "About This Macintosh..." dialog. (Tim Swihart)
  5630. This can be fixed by using the freeware Mac Identifier extension, located
  5631. at ftp://ftp.fluxsoft.com/pub/Mac_Identifier_2.0.sit.hqx.
  5632. Or use the WhoAmI? application, which can be found at
  5633. ftp://sumex-aim.stanford.edu/info-mac/cfg/who-am-i-121.hqx. (Rene Ros)
  5634. Apple says that in the future ID's will be reused and the kMachineNameStrID
  5635. will contain only the text '  Macintosh' (two spaces first) &AT01
  5636. This policy seems to have changed because the System 7.5 Update enabler
  5637. installed by System 7.5 Update 1.0 either contains '  Macintosh',
  5638. '  Macintosh PowerBook' or '  Power Macintosh' (all with two leading
  5639. spaces). Perhaps the 'mach' selector in the future will be used to indicate
  5640. the category only. Then we'll get another mechanism/selector to get the
  5641. real machine type? Rumour goes a new ROM is developed which allows clone
  5642. makers to have their machines identified properly. (Rene Ros, with some
  5643. info from John Mancino)
  5644.  
  5645. All system enablers have the machine name resource included to replace the
  5646. one in the System file. In most cases this resource lists the same
  5647. Macintosh names as the original one in System 7.1 and adds the names of the
  5648. machines the enabler is intended for. But some only list the machines the
  5649. enabler is used with. Therefore, if you want to display the name of a
  5650. machine which isn't of the current machine type you can't rely on this
  5651. resource anymore. (Rene Ros)
  5652.  
  5653. The Performa 600 was originally planned to ship as Macintosh IIvm but the
  5654. name was changed because users thought 'vm' meant 'Virtual Memory'. MOST
  5655. system enablers (i.e. 001, 040, 065 & 201) contain this original name.
  5656.  
  5657. The Machine Name resource in the MAE Enabler 1.0 contains the string
  5658. "MAE 1.0" in these items: 19, 28, 130, 131 and 132.
  5659.  
  5660. The PowerPC Enabler 1.1 enabler contains a Machine Name resource which
  5661. lists these names:
  5662.      items 1-66 contain the item number itself except:
  5663.            12 Power Macintosh 8100/120
  5664.            31 Paula's Desk Macintosh
  5665.            39 Workgroup Server 9150
  5666.            40 Power Macintosh 8100/110
  5667.            46 Power Macintosh 6100/66
  5668.            47 Power Macintosh 7100/80
  5669.            55 Power Macintosh 8100/100
  5670.            64 Power Macintosh 8100/60
  5671.            65 Power Macintosh 8100/80
  5672.            66 Power Macintosh 8100/100
  5673.      items 67-115 are empty except:
  5674.            75 Power Macintosh 6100/60
  5675.           100 Power Macintosh 6100/66
  5676.           101 Power Macintosh 6100/80
  5677.           111 Power Macintosh 7100/60
  5678.           112 Power Macintosh 7100/66
  5679.           113 Power Macintosh 7100/80
  5680.      items 116-123 contain the text "  Power Macintosh"
  5681. "Paula's Desk Macintosh" disappeared again with version 1.1.1 of the
  5682. PowerPC enabler, it was replaced by the number '31' ! :-)
  5683. The duplicate names for some of the Power Macintosh models was resolved
  5684. and it is now know that some values belong to a never to be released
  5685. ROM version. See the gestaltMachineType entry for more detailed
  5686. information.
  5687.  
  5688. The PowerBook 5300/190 Enabler now lists the full machine names again!
  5689. (Eric-Paul Rebel)
  5690.  
  5691. The Gestalt.h file for ETO 20 states that all future machine type
  5692. constant names take the following form:
  5693.      gestalt<lineName><modelNumber>
  5694. For the current lines the linename is one of the following:
  5695.          Macintosh LC               "MacLC"
  5696.          Macintosh Performa         "Performa"
  5697.          Macintosh PowerBook        "PowerBook"
  5698.          Macintosh PowerBook Duo    "PowerBookDuo"
  5699.          Power Macintosh            "PowerMac"
  5700.          Apple Workgroup Server     "AWS"
  5701. The modelnumber does not include the clockspeed not minor RAM and
  5702. harddisk configuration differences reflected in the two rightmost
  5703. digits of the modelnumber. Hence, both a Performa 6100 and
  5704. Performa 6115 have the constant name: gestaltPerforma6100.
  5705. (Summarised by Rene Ros, based on Gestalt.h file provided by
  5706.  Marco Piovanelli; May 1996)
  5707.  
  5708. Macintosh Application Environment
  5709. ---------------------------------
  5710. (by Rene Ros, with thanks to Jos van Wezel for providing the workstation
  5711.  and installing the software.)
  5712.  
  5713. Using the MAE 1.0 demo version is quite stressful since it expires after
  5714. eight hours! Copying files to a disk doesn't work also because all you
  5715. are left with is an file with only the resource map and a few resources.
  5716. All resources are maintained by MAE. But by using ResEdit it is possible
  5717. to copy the resources itself one for one to a file on a floppy disk.
  5718. Under MAE 1.0 these results were found on a SUN SPARCstation 5:
  5719.  
  5720. ===========================================================================
  5721. Summary of Gestalt Selectors installed with MAE 1.0
  5722. ===========================================================================
  5723. Selector      Response  Remark
  5724. ---------------------------------------------------------------------------
  5725. a/ux          3.0.1
  5726. cput              5     MC68040
  5727. fpu               0     none
  5728. mach             19     which is the LC, but the MAE Enabler only has
  5729.                         'MAE 1.0' in the machine name STR# resource
  5730. mmu               0     none
  5731. proc              5     MC68040
  5732. rom            2048K
  5733. romv           1917
  5734. snd               0     no sound support, no system beeps to choose from
  5735. snhw           awac
  5736. cith              0     huh?
  5737. ---------------------------------------------------------------------------
  5738.  
  5739. See also a note with the gestaltMachineType ('mach') selector entry.
  5740.  
  5741. Macintosh Compatibles
  5742. ---------------------
  5743. (by Rene Ros, contributions by Jean-Pierre Curcio, Kenneth Knotts and Marc
  5744.  Schrier. Also based on MacWEEK articles and GURU application by Newer
  5745.  Technologies.)
  5746.  
  5747. So far the clone manufacturers have released computers which hardware
  5748. is identical, though clockspeed may be different, to other computers
  5749. released by Apple. This section contains a table of clone model names and
  5750. the equivalent Apple ID number and constant name.
  5751.  
  5752. The Pioneer clone (codename Pioneer MPC-GX1 where MPC stands for Multimedia
  5753. Personal Computer) was observed at CeBIT '95.
  5754.  
  5755. ===========================================================================
  5756. Clone Machines
  5757. ===========================================================================
  5758. Manufacturer       Model Name               Apple Hardware Model
  5759.                                             ID    Constant
  5760. ---------------------------------------------------------------------------
  5761. Daystar            Genesis MP 132           ???
  5762.                    Genesis MP 150           ???
  5763. NUpowr             Power PC for PowerBooks 500's
  5764.                                             ???
  5765. Pioneer            MPC-GX1                  100   gestaltPowerMac6100_66
  5766. Power Computing    Power 100                 55   gestaltPowerMac8100_100
  5767.                    Power 120                 12!  gestaltPowerMac8100_120
  5768.                    PowerCurve 601/120       108   gestaltPowerMac7200 @ 120
  5769.                    PowerTower 604/166       ???   gestaltPowerMac7500 ?
  5770.                    PowerTower 604/180       ???   gestaltPowerMac7500 ?
  5771.                    PowerCenter 604/120      ???   gestaltPowerMac7500 ?
  5772.                    PowerCenter 604/132      ???   gestaltPowerMac7500 ?
  5773.                    PowerCenter 604/150      ???   gestaltPowerMac7500 ?
  5774.                    PowerWave 604/120         67   gestaltPowerMac9500
  5775.                    PowerWave 604/132         67   gestaltPowerMac9500
  5776.                    PowerWave 604/150         67   gestaltPowerMac9500
  5777. Radius             81/110                    40   gestaltPowerMac8100_110
  5778.                    System 100               ???   gestaltPowerMac8100??? ?
  5779. UMAX Computer      SuperMac Riptide ?       ???
  5780.                    SuperMac Storm Surge 150 ???
  5781.                    SuperMac S900L           ???
  5782.                    SuperMac S900D           ???
  5783. ---------------------------------------------------------------------------
  5784. ! value not belonging to any by Apple released computer
  5785. ---------------------------------------------------------------------------
  5786.  
  5787. Modern Memory Manager
  5788. ---------------------
  5789. (by John W. Baxter and Eric Schlegel)
  5790.  
  5791. The Universal Headers from Apple have a revised Memory Manager heap zone
  5792. header and named constants, which provide a documented methode of detecting
  5793. the Modern Memory Manager. It is as yet unknown whether the kNewDebugHeap
  5794. flag set implies kNewStyleHeap set.  The code here does not assume so...but
  5795. some might wish to test each flag in its own function.
  5796.  
  5797. Boolean IsModernMemory (void) {
  5798.  
  5799.     THz myZone = GetZone ();
  5800.  
  5801.     return (myZone->heapType & (kNewStyleHeap | kNewDebugHeap)) != 0;
  5802.     }
  5803.  
  5804. If you use older headers, replace the return statement with this line:
  5805.  
  5806.     return (0 != ((*myZone).maxNRel & 0x0600));
  5807.  
  5808. The new headers have the heapType field as a Byte (followed by a Byte
  5809. filler), together replacing the maxNRel short.  The bits in it are defined
  5810. by these masks:
  5811.  
  5812. enum {
  5813. /* masks for Zone->heapType field */
  5814.     k32BitHeap      = 1, /* valid in all Memory Managers */
  5815.     kNewStyleHeap   = 2, /* true if new Heap Manager is present */
  5816.     kNewDebugHeap   = 4  /* true if new Heap Manager is running in debug
  5817.                             mode on this heap */
  5818. };
  5819.  
  5820. PPC Libraries
  5821. -------------
  5822. (based on a posting by John Baxter in the comp.sys.mac.programmer Usenet
  5823.  newsgroup on Internet.)
  5824.  
  5825. Some of the Gestalt selector functions are smart enough to avoid crashing
  5826. when the user removed the library file from the Extensions folder without
  5827. restarting the machine. And some selector functions aren't that smart.
  5828. Safest is to preflight the first call you make into the library (for code
  5829. or data) or include a preflight in your startup. 
  5830.  
  5831. QuickTime
  5832. ---------
  5833. (by Michael Hecht, additions by Rene Ros)
  5834.  
  5835. If you install QuickTime under System 6, a major portion of the Alias
  5836. Manager and FSSpec support is also added. But, QT doesn't implement the
  5837. Gestalt selectors because the implementation is not complete. You must
  5838. check for either Alias Mgr or QuickTime.
  5839.  
  5840. These are the limitations for the Alias Mgr installed by QuickTime:
  5841.     - NewAlias will accept fromFile parameter, but it never creates a
  5842.       relative alias.
  5843.     - NewAliasMinimalFromPath and ResolveAliasFile aren't available.
  5844.     - ResolveAlias and UpdateAlias ignore the fromFile parameter.
  5845.     - MatchAlias may be called but the kARMMultVols, kARMSearchMore and
  5846.       kARMSearchRelFirst flags aren't available and ignored if passed.
  5847.       Also, a matchProc will never be called.
  5848.     - Won't mount network volumes.
  5849.  
  5850. And these are the FSSpec calls available with System 6 when QuickTime is
  5851. installed:
  5852.     - FSMakeFSSpec
  5853.     - FSpOpenDF
  5854.     - FSpOpenRF
  5855.     - FSpCreate
  5856.     - FSpDirCreate
  5857.     - FSpDelete
  5858.     - FSpGetFInfo
  5859.     - FSpSetFInfo
  5860.     - FSpSetFLock
  5861.     - FSpRstLock
  5862.     - FSpRename
  5863.     - FSpCatMove
  5864.     - FSpOpenResFile
  5865.     - FSpCreateResFile
  5866.     - FSpGetCatInfo
  5867.  
  5868. See for more information Technical Note M.QT.MovieTB.Q&As (QT 510) and
  5869. D e v e l o p 11 magazine on page 122.
  5870.  
  5871. RAM Doubler
  5872. -----------
  5873. (by anonymous contributor and Rene Ros)
  5874.  
  5875. RAM Doubler implements virtual memory in a different way than the normal
  5876. Apple VM mechanism. It looks like this is done in corporation with Apple
  5877. since a selector installed by RAM Doubler is 'vmem' which is all lower-case
  5878. and thus reserved by Apple.
  5879. In addition the response from this selector is always (long)'RaM2' which
  5880. is the creator type of RAM Doubler. It seems this selector is used to
  5881. indicate which software is used to extend the capabilities of the Virtual
  5882. Memory Manager.
  5883. RAM Doubler also installs the selector 'vmFn' which seems to be a pointer
  5884. to a function to control RAMDoubler (1.0?) or to obtain information. It
  5885. looks like registers are used to pass parameters to and from that function.
  5886. D0 perhaps holds values 1 to 6 as input and perhaps A0 is used for the
  5887. return value.
  5888.  
  5889. pascal OSErr VMExtensionControl? (UInt16 selector, UInt32 *result)
  5890.      Registers on entry   D0: selector code
  5891.      Registers on exit    A0: result code
  5892.                           D0: error code
  5893.      Result codes
  5894.        noErr                       0 No error
  5895.        invalidSelector?          206 Invalid selector value?
  5896.        ???
  5897.  
  5898. Values used as selector:
  5899.      enum {
  5900.      kVMControlType?        = 1,       /* type VM extension: RaM2 */
  5901.      kVMControlVersion?     = 2,       /* version VM extension as BCD */
  5902.      kVMControl???          = 3,       /* engine version as BCD?: 0x0313 */
  5903.      kVMControlMemSize?     = 4,       /* unknown: Get/SetMemorySize? */
  5904.      kVMControlMemSize?     = 5,       /* unknown: Get/SetMemorySize? */
  5905.      kVMControl???          = 6,       /* unknown */
  5906.      kVMContolMaxFunctions? = MAXINT}; /* returns number of valid */
  5907.                                        /*  selectors, or any other value */
  5908.                                        /*  outside the  current 1-6 */
  5909.                                        /*  range */
  5910.  
  5911. Remember: all this is heresay!!!
  5912.  
  5913. Because of all this you can imagine RAM Doubler replaces/installs the
  5914. following System Software selectors (and I think it does):
  5915. lram, pgsz, ram , vm  , vmbs.
  5916.  
  5917. Relabled Macintosh Models
  5918. -------------------------
  5919. (by Rene Ros;
  5920.  Originally based on the Mac Models List by J.D. Sterling Babcock.
  5921.  Since Summer 1995 based on MacFacts by Apple Computer Inc.)
  5922.  
  5923. WARNING:
  5924. This report is ready for a major revision!
  5925.  
  5926. The Performa models usually (there are some exceptions) return a  machine
  5927. ID# for the model they are based on. The table below lists several models
  5928. which are simply relabled and the hardware model they are based on.
  5929.  
  5930. ===========================================================================
  5931. Relabled Machines
  5932. ===========================================================================
  5933. Relabled Model          Hardware Model               Note
  5934. Name                    Constant
  5935. ---------------------------------------------------------------------------
  5936. Macintosh ED            gestaltMacPlus               sold in Netherlands?,
  5937.                                                      512K with Mac SE case
  5938.                                                      color
  5939. Macintosh LC III+       gestaltPerforma460
  5940. Performa 200            gestaltClassicII
  5941. Performa 250            gestaltMacColorClassic       sold in Australia and
  5942.                                                      Britain
  5943. Performa 275            gestaltMacColorClassic
  5944. Performa 400            gestaltMacLCII
  5945. Performa 405            gestaltMacLCII
  5946. Performa 410            gestaltMacLCII
  5947. Performa 430            gestaltMacLCII
  5948. Performa 450            gestaltMacLCIII
  5949. Performa 460                                         not relabeled, own ID
  5950. Performa 466            gestaltPerforma460
  5951. Performa 467            gestaltPerforma460
  5952. Performa 475            gestaltMacLC475
  5953. Performa 476            gestaltMacLC475
  5954. Performa 520            gestaltMacLC520
  5955. Performa 550            gestaltMacLC550
  5956. Performa 560            gestaltMacLC550
  5957. Performa 575            gestaltMacLC575
  5958. Performa 577            gestaltMacLC575
  5959. Performa 578            gestaltMacLC575
  5960. Performa 580            gestaltMacLC580
  5961. Performa 588            gestaltMacLC580
  5962. Performa 600                                         not relabeled, own ID
  5963. Performa 630            gestaltMac630
  5964. Performa 631            gestaltMac630
  5965. Performa 635            gestaltMac630
  5966. Performa 636            gestaltMac630
  5967. Performa 637            gestaltMac630
  5968. Performa 638            gestaltMac630
  5969. Performa 640            gestaltMac630
  5970. Performa 5200           gestaltPowerMac5200
  5971. Performa 5210           gestaltPowerMac5200
  5972. Performa 5215           gestaltPowerMac5200
  5973. Performa 5220           gestaltPowerMac5200
  5974. Performa 5260           gestaltPowerMac5200
  5975. Performa 5320           gestaltPowerMac5200
  5976. Performa 5400           gestaltPowerMac5400
  5977. Performa 6110           gestaltPowerMac6100_60
  5978. Performa 6112           gestaltPowerMac6100_60
  5979. Performa 6115           gestaltPowerMac6100_60
  5980. Performa 6116           gestaltPowerMac6100_60
  5981. Performa 6117           gestaltPowerMac6100_60
  5982. Performa 6118           gestaltPowerMac6100_60
  5983. Performa 6200           gestaltPowerMac6200
  5984. Performa 6216           gestaltPowerMac6200
  5985. Performa 6218           gestaltPowerMac6200
  5986. Performa 6220           gestaltPowerMac6200
  5987. Performa 6230           gestaltPowerMac6200
  5988. Performa 6300           gestaltPowerMac6200
  5989. Performa 6320           gestaltPowerMac6200
  5990. PowerMac 6100/60AV      gestaltPowerMac6100_60
  5991. PowerMac 7100/66AV      gestaltPowerMac7100_66
  5992. PowerMac 8100/80AV      gestaltPowerMac8100_80
  5993. PowerMac WGS 6150/60    gestaltPowerMac6100_60
  5994. PowerMac WGS 6150/66    gestaltPowerMac6100_66
  5995. PowerMac WGS 8150/80    gestaltPowerMac8100_80
  5996. PowerMac WGS 8150/110   gestaltPowerMac8100_110
  5997. Quadra 660AV            gestaltMacCentris660AV
  5998. Workgroup Server 60     gestaltMacCentris610
  5999. Workgroup Server 80     gestaltMacQuadra800
  6000. Workgroup Server 95     gestaltQuadra950
  6001. Workgroup Server 95+    gestaltQuadra950
  6002. Workgroup Server 7250   gestaltPowerMac7200 @ 120 MHz
  6003. Workgroup Server 8550   gestaltPowerMac8500 @ 132 MHz
  6004. ---------------------------------------------------------------------------
  6005.  
  6006. General Info
  6007. ============
  6008. The following sections provide general information needed or useful in
  6009. relation to the Gestalt Manager.
  6010.  
  6011. System Managers
  6012. ---------------
  6013. Listed below is a table with the different software components of the
  6014. System Software with their related selectors. The selectors listed with
  6015. this table are included in the (known) 'Apple System Software' and
  6016. 'Apple Additional Software' chapters.
  6017. It provides a cross-reference to selectors and a starting point into other
  6018. documentation (Inside Macintosh).
  6019. With System Software versions before 6.0.4 (and Gestalt) you may need to
  6020. use TrapAvailable to determine the presence of certain system parts.
  6021.  
  6022. ===========================================================================
  6023. System Software components and their selectors
  6024. ===========================================================================
  6025. Manager                        Determine presence/features by using:
  6026. ---------------------------------------------------------------------------
  6027. 8*24 Graphics Card             gc24
  6028. A/UX                           a/ux
  6029. ADB Mgr                        ???
  6030. Alias Mgr                      alis
  6031. AOCE Utilities                 ???
  6032. Apple Event Mgr                evnt
  6033. Apple Guide                    help, reno
  6034. Apple Photo Access             kpcd
  6035. Apple Remote Access            arb , strm
  6036. AppleScript                    ascr, ascv
  6037. AppleTalk Mgr                  atkv, atlk
  6038. AppleTalk Phase 2              atkv >= 53
  6039. At Ease                        kids
  6040. ATA Manager                    TrapAvailable(0xAAF1), ata 
  6041. Audio CD Access                aucd
  6042. Authentication Mgr             ???
  6043. Catalog Mgr                    ???
  6044. CD-ROM Software                see:
  6045.                                   Apple Photo Access
  6046.                                   Audio CD Access
  6047.                                   Foreign File Access
  6048.                                   High Sierra File Access
  6049.                                   ISO 9660 File Access
  6050. CloseView                      BSDa
  6051. Code Fragment Mgr              cfrg
  6052. Collection Mgr                 cltn
  6053. Color Mgr                      ???
  6054. Color Picker Mgr               cpkr
  6055. ColorSync Utilities            cmta, cmtc
  6056. Communications Toolbox         ctbm, ctbu, ctbv
  6057.                                see also:
  6058.                                   Communications Resource Mgr
  6059.                                   Connection Mgr
  6060.                                   Telephone Mgr
  6061.                                   Terminal Mgr
  6062. Communications Resource Mgr    crm 
  6063. Component Mgr                  cpnt
  6064. Compression Mgr                icmp
  6065. Connection Mgr                 conn
  6066. Control Mgr                    no need to check
  6067. Control Strip                  sdev, csvr
  6068. Cuda Dispatch Mgr              cuda? (for more info:
  6069.                                       Developer Note 'Mac LC630 &
  6070.                                       Quadra 630' and SAA7194/6 Philips
  6071.                                       Desktop Video Handbook)
  6072. Cursor Device Manager          TrapAvailable(0xAADB)
  6073. Cursor Utilities               qd >= gestalt32BitQD
  6074. Data Access Mgr                dbac
  6075. Date, Time and Measurement Utilities
  6076.                                ???
  6077. Debugger                       debugger dependant, see also MacsBug
  6078. Deferred Task Mgr              no need to check?
  6079. Desk Manager                   no need to check
  6080. Desktop Animation Mgr (Copland?)
  6081.                                danm
  6082. Desktop Mgr                    PBHGetVolParms fills GetVolParmsInfoBuffer.
  6083.                                Test for the bHasDesktopMgr bit (12) of the
  6084.                                vMAttrib field for all volumes.
  6085. Device Mgr                     no need to check
  6086. Dialog Mgr                     ditl, TrapAvailable(_DialogMgrDispatch)
  6087. Dictionary Mgr                 dict
  6088. Digital Signatures Mgr         dsig
  6089. Disk Initialization Mgr        fs  
  6090. Display Mgr                    dplv, dply
  6091. Docking Mgr                    ???
  6092. Drag Manager                   drag
  6093. Easy Access                    eajt, easy
  6094. Edition Mgr                    edtn
  6095. Event Mgr                      no need to check?
  6096. Exception Mgr                  no need to check?
  6097. File Mgr                       ???, fs  
  6098. File System Mgr                fs  , fsm 
  6099. File Transfer Mgr              fxfr
  6100. Finder                         fndr
  6101. FindFolder function            fold
  6102. Flagship                       flag
  6103. Font Mgr                       font
  6104. Foreign File Access            ufox
  6105. Gestalt Mgr                    gval, tabl, vers, TrapAvailable(_Gestalt),
  6106.                                TrapAvailable(_GestaltValueDispatch)
  6107. Graphics Worlds                (qd > gestaltOriginalQD and qd < gestalt8BitQD)
  6108.                                 or (qd >=gestalt32BitQD)
  6109. Help Mgr                       help
  6110. High Sierra File Access        hscd
  6111. Icon Utilities                 icon, TrapAvailable(_IconDispatch)
  6112. Interprogram Messaging Mgr     ???
  6113. ISO 9660 File Access           hscd, iscd
  6114. LAP Mgr                        atlk >= 53
  6115. List Mgr                       no need to check ?
  6116. MacsBug                        See PT 535 - MacsBug Q&As TechNote
  6117. MacTCP                         mtcp
  6118. Mathematical and Logical Utilities
  6119.                                no need to check?
  6120. Memory Mgr                     addr, cash, lram, os  
  6121.                                see also: Modern Memory Mgr
  6122. Memory Management Utilities    addr, TrapAvailable(_HWPriv) ?
  6123. Menu Mgr                       no need to check
  6124. Message Mgr                    mess
  6125. MIDI Mgr                       ???
  6126. Mixed Mode Mgr                 mixd
  6127. Modern Memory Mgr              see: Modern Memory Manager section of the
  6128.                                     Report chapter.
  6129. Movie Toolbox                  ???
  6130. Name Registry                  nreg
  6131. Navigation Services (Copland?) nvsv
  6132. Notification Mgr               nmgr, TrapAvailable(_NMInstall) with System
  6133.                                      before 6.0.4 ?
  6134. OCE Toolbox                    ocet, oceu
  6135. Open Firmware                  opfw
  6136. OpenDoc (CALib)                calb
  6137. OS Utilities                   depends on call
  6138. OSA                            Use Component Mgr to check for Generic
  6139.                                Scripting Component
  6140. Package Mgr                    no need to check
  6141. Parameter RAM Utilities        no need to check?
  6142. PC Card Manager                pccd, TrapAvailable(_PCCardDispatch) [0xAAF0]
  6143. PC Exchange                    pcxg
  6144. Picture Utilities              sysv >= 0x0700
  6145. Popup CDEF                     pop!
  6146. Power Mgr                      powr
  6147. PowerTalk                      see:
  6148.                                   Digital Signatures Mgr,
  6149.                                   OCE Toolbox,
  6150.                                   S&F Server,
  6151.                                   SDP Find,
  6152.                                   SDP Prompt,
  6153.                                   SDP Standard Directory,
  6154.                                   SMP Mailer,
  6155.                                   SMP Sendletter
  6156. PPC Toolbox                    ppc 
  6157. Printing Manager               no need to check?
  6158. Process Mgr                    os  
  6159. Queue Utilities                ???
  6160. QuickDraw                      qd  , qdrw
  6161. QuickDraw 3D                   qd3d, q3vc, q3v 
  6162. QuickDraw GX                   qdgx
  6163. QuickDraw GX Graphics          gfxa, grfx
  6164. QuickDraw GX Printing Mgr      pmgr
  6165. QuickTime                      qtim, qtrs
  6166. Realtime Mgr                   rtmr
  6167. Resource Mgr                   rsrc
  6168. S&F Server (PowerTalk)         see OCE Toolbox
  6169. SANE (OmegaSANE)               ???
  6170. Scrap Mgr                      scra
  6171. Script Mgr                     scr#, scri, TrapAvailable(_ScriptUtil)
  6172. SCSI Mgr                       scsi
  6173. SDP Find (PowerTalk)           dfnd
  6174. SDP Prompt (PowerTalk)         prpv
  6175. SDP Standard Directory (PowerTalk)
  6176.                                sdvr
  6177. Segment Mgr                    no need to check
  6178. Server control calls           TrapAvailable(ServerDispatch) [0xA094]
  6179. Shared Library Mgr             aslm, slmp
  6180. Shutdown Mgr                   TrapAvailable(_Shutdown) ?, pwky
  6181. Slot Mgr                       nubs, slot, slt1, sltc
  6182. SMP Mailer (PowerTalk)         malr
  6183. SMP Sendletter (PowerTalk)     spsl
  6184. Sound Mgr                      snd , snhw, TrapAvailable(_SoundDispatch)
  6185. Sound Input Mgr                snd 
  6186. Speech Mgr                     ttsc
  6187. Speech Recognition Mgr         srta, srtb
  6188. Standard Catalog Package       ???
  6189. Standard File Package          stdf
  6190. Standard Mail Package          ???
  6191. Standard NBP                   nlup
  6192. Start Mgr                      ???
  6193. System Toolbox (hardware)
  6194.    coprocessor                 fpu
  6195.    disks                       intd
  6196.    licensee                    hrad
  6197.    keyboard                    kbd 
  6198.    machine                     mach
  6199.    main I/O bus                bclk
  6200.    misc. ICs                   hdwr, mmu , rbv , sccr, sccw, ser ,
  6201.                                via1, via2
  6202.    processor                   cput, pclk, proc, sysa
  6203.    RAM ICs                     ram , prty
  6204.    ROM ICs                     rom , romv
  6205.    trackpad                    tpad
  6206. System Toolbox (software)      lmem, micn, misc, os  
  6207.    licensee                    srad
  6208.    trap tables                 ostt, tbtt, xttt
  6209.    version                     osyv, sysu, sysv
  6210. Telephone Mgr                  tele
  6211. Terminal Mgr                   term
  6212. Text Services Mgr              tsma, tsmv
  6213. Text Services Manager for TextEdit
  6214.                                tmTE, tmTV
  6215. Text Utilities                 depends on call
  6216. TextEdit                       te  , teat
  6217. Thread Mgr                     thds
  6218. Time Mgr                   C 7.1 >
  6219.                          sltc  No information on IIsi slot       C never?
  6220.                          sysv  KanjiTalk 6.0.7 incorrect return value
  6221.                                                                  C sysvINIT
  6222.                                System 6.0.8 returns 0x0607         never
  6223.                                System 7.1.2/PPC card returns 0710  unclear
  6224.                          tv    Bits 3 and 4 incorrectly set        unclear
  6225.                                Bit 5 incorrectly clear             unclear
  6226. System/Apple Event ext   evnt  constants overlap header files    C fixed
  6227. Shared Libary Manager    aslm  function of early versions crash    fixed
  6228. Transporter ext          TRNS  calling function causes interface
  6229.                                 problems
  6230. Virex cp?                VrkS  triggers quickscan feature just
  6231.                                 by calling function
  6232. ---------------------------------------------------------------------------
  6233. R       = unconfirmed but known to be reported to Apple
  6234. C       = confirmed
  6235. fixed   = problem is fixed, see selector entry for more information
  6236. ok      = meant to work this way...
  6237. unclear = unclear if it will ever be fixed
  6238. unknown = unknown when it will be fixed
  6239.  
  6240. One general Gestalt problem is that NewGestalt calls StripAddress on the
  6241. procptr passed to it, not on a local copy, so the stripping becomes
  6242. permanent. This is fixed by System 7.5.1 and later.
  6243.  
  6244. Inside Macintosh Operating System Utilities says (on page 1-37) the A0 and
  6245. D0 registers are used to pass/return data to/from the selector function,
  6246. MySelectorFunction. This is incorrect since the function is Pascal stack
  6247. based. (Nobu Toge, Steve Ko)
  6248.  
  6249. History
  6250. -------
  6251. This section contains a short overview about the history of the Gestalt
  6252. Manager and its predecessors.
  6253.  
  6254.  
  6255. **ENVIRONS**
  6256.  
  6257.      PROCEDURE Environs (VAR rom,machine: INTEGER);
  6258.  
  6259. With the introduction of the Macintosh the system routine 'Environs' was
  6260. introduced. It allowed to obtain two pieces of information: the ROM version
  6261. and a value to indicate the machinetype. This "ROM oriented" way soon
  6262. appeared to be insufficient when the range of Macintosh hardware and
  6263. software became more diverse.
  6264.  
  6265.  
  6266. **SYSENVIRONS**
  6267.  
  6268.      FUNCTION SysEnvirons (versionRequested: INTEGER;
  6269.                            VAR theWorld: SysEnvRec): OSErr;
  6270.  
  6271. With System 4.1 a new system routine was introduced which allowed the
  6272. programmer to obtain more information about the current configuration.
  6273. Upon completion SysEnvirons filled the SysEnvRec with the information.
  6274. This was however an "all-or-nothing" situation, it was not possible to
  6275. obtain just one piece of information.
  6276. To allow for larger system environment records with more information one
  6277. needed to specify the version number of the system environment record. The
  6278. last version, introduced with System 6, was version 2 which had nine fields.
  6279.  
  6280.  
  6281. **GESTALT**
  6282.  
  6283.      FUNCTION Gestalt (code: LONGINT; VAR feature: LONGINT): OSErr;
  6284.  
  6285. You may wonder how one can be so stupid to list the Gestalt routine wrong...
  6286. However, this is how the Gestalt routine was presented to developers in
  6287. the Preliminairy Developer Note regarding System 7 in 1989. It was
  6288. originally written in 1988.
  6289. There was no selector of type OSType as we known it today. Instead a list
  6290. of numerical constants was used, like:
  6291.  
  6292.      zVersion    = $1;   { Gestalt Version }
  6293.      zMachType   = $100; { machine type }
  6294.      zSystemVers = $101; { system file version }
  6295.  
  6296. and nine others.
  6297. But the principle used with todays Gestalt routine was there: request one
  6298. specific piece of information and you'll get it. Nothing more and nothing
  6299. less. Back then it wasn't the Gestalt Manager since there was only one
  6300. routine. Both the NewGestalt and the ReplaceGestalt did not exist.
  6301. In June 1992 (released in February 1993?) three new functions were added
  6302. to the Gestalt Manager: NewGestaltValue, ReplaceGestaltValue,
  6303. DeleteGestaltValue and SetGestaltValue.
  6304. The first name/initials of the programmers are returned by two special
  6305. selectors, namely (OSType) 7 and (OSType) 13. Their names can not be
  6306. disclosed.
  6307.  
  6308. Abbreviations
  6309. -------------
  6310. A/UX     - Apple UNIX
  6311. ADB      - Apple Desktop Bus
  6312. AMU      - Apple Memory Unit?
  6313. ARBus    - Apple RISC Bus
  6314. ARTA     - Apple Real Time Architecture
  6315. AS       - AppleShare
  6316. ASC      - Apple Sound Chip
  6317. ASCII    - American Standard Code for Information Interchange
  6318. ASIC     - Application Specific Integrated Circuit
  6319. ASLM     - Apple Shared Library Manager
  6320. ATA      - ??? (ATA Mgr, for IDE drive support)
  6321. AURP     - AppleTalk Update-based Routing Protocol
  6322. AWAC     - Audio Waveform Amplifier and Converter
  6323. BIOS     - Basic I/O System
  6324. Caboose  - processor that manages the keyswitch, system power,
  6325.            the real-time clock, and parameter RAM
  6326. CDEF     - Control DEFinition (code resource)
  6327. CFM      - Code Fragment Manager
  6328. CHRP     - Common Hardware Reference Platform
  6329. CISC     - Complex Instruction Set Computer (compare with RISC)
  6330. CLUT/DAC - color look-up table and digital-to-analog converter IC
  6331. Combo    - chip, combines the functions of the SCC and the SCSI controller
  6332. CPU      - Central Processing Unit
  6333. Cuda     - ASIC that implements the ADB, PRAM and Soft Power on more
  6334.            recent Macs. Apperantly this IC will (or already does?) emulate
  6335.            the IBM keyboard controller also.
  6336. Cyclops  - IC to control remote control receiver.
  6337. DAFB     - Direct Access Frame Buffer
  6338. DAV      - Digital Audio Video (connector)
  6339. DDC      - Display Driver Chip
  6340. DESC     - Digitale Video Decoder and Scaler
  6341. DFAC     - Digitally Filtered Audio Chip
  6342. DITL     - Dialog ITems List (resource)
  6343. DLL      - Dynamically Linkable Library or
  6344.            Driver Loader Library
  6345. DMA      - Direct Memory Access
  6346. DN       - Developer Note
  6347. DOS      - Disk Operating System (to run a computer???)
  6348. DRAM     - Dynamic RAM
  6349. DSP      - Digital Signal Processor
  6350. EASC     - Enhanced Apple Sound Chip
  6351. FAT      - File Allocation Table?
  6352. FMC      - Fitch Memory Controller
  6353. FPU      - Floating Point Unit
  6354. GDEF     - Gestalt DEFinition (code resource)
  6355. GPi      - General Purpose Input
  6356. IDE      - Integrated Device Electronics
  6357. IIC      - Inter-Integrated Circuit, standard bus for talking to TV related
  6358.            chips using a 3-wire signal.
  6359. IM       - Inside Macintosh
  6360. IOP      - Input/Output Processor
  6361. IWM      - Integrated Woz Machine
  6362. Jaws     - ???
  6363. JDB      - Junction Data Bus
  6364. JMC      - Jaws Memory Controller
  6365. MacOS    - Macintosh Operating System
  6366. MCU      - Memory Control Unit
  6367. MAE      - Macintosh Application Environment (Mac system on UNIX RISC)
  6368. MEO      - Macintosh Easy Open
  6369. MESH     - Macintosh Enhanced SCSI Hardware
  6370. MMU      - Memory Management Unit
  6371. NBP      - Name Binding Protocol
  6372. NTSC     - National Television Standards Comittee
  6373.            (standard broadcast TV in North America and Japan)
  6374. NVRAM    - non-volatile RAM
  6375. OCE      - Open Colloboration Environment
  6376. OMC      - Orwell Memory Controller
  6377. OS       - Operating System
  6378. OSA      - Open Scripting Architecture:
  6379.            OSA is the Open Scripting Architecture. It is the layer upon
  6380.            which all scripting languages sit and the method by which
  6381.            applications call scripts. (Jon Pugh)
  6382. OSL      - Object Support Library
  6383. OSS      - Operating System Support chip
  6384. PAL      - Phase Alternating Line system
  6385.            (standard broadcast TV in most of Europe, South America, and
  6386.             southern Asia)
  6387. PB       - PowerBook
  6388. PCI      - Peripheral Component Interconnect
  6389. PCMCIA   - Personal Computer Memory Card International Association
  6390. PDS      - Processor-Direct Slot
  6391. PGC      - Parity Generator Chip
  6392. PMMU     - Paged Memory Management Unit
  6393. PSRAM    - Pseudo Static RAM
  6394. PPC      - Process-to-Process Communication, also:
  6395.            PowerPC
  6396. PRAM     - Parameter RAM
  6397. ProDOS   - Professional Disk Operating System? (OS for the Apple ][)
  6398. PWM      - Pulse-Width Modulated?
  6399. QD       - QuickDraw
  6400. RAM      - Random Access Memory (see DRAM & SRAM, compare ROM)
  6401. RAMDAC   - Random Access Memory, Digital/Analog Converter
  6402. RBV      - RAM-Based Video
  6403. RISC     - Reduced Instruction Set Computer (compare with CISC)
  6404. ROM      - Read Only Memory
  6405. RSB      - Ram Based Sound
  6406. RTC chip - Real-Time Clock chip
  6407. RPU      - Random Parity Unit
  6408. SANE     - Standard Apple Numerics Environment
  6409. SCC      - Serial Communications Controller
  6410. SCSI     - Small Computer System Interface
  6411. SDP      - Standard Directory Package
  6412. SECAM    - standard broadcast TV in France and the former Soviet
  6413. SIMM     - Single In-line Memory Module
  6414. SMP      - Standard Mailer Package or
  6415.            Symmetric MultiProcessor
  6416. SOM      - System Object Model
  6417. Sonic    - chip for built-in Ethernet
  6418. Sporty   - a custom IC that provides sound output amplification functions
  6419. SRAM     - Static RAM
  6420. SWIM     - Super-Wozniak Integrated Machine
  6421. TCP/IP   - Transmission Control Protocol/Internet Protocol
  6422. TE       - TextEdit (32Kb limited built-in text-engine)
  6423. TN       - Technical Note
  6424. TTS      - Text-To-Speech
  6425. Valkyrie - IC containing the video display control
  6426. VDAC     - Video Digital to Analog Converter
  6427. VIA      - Versatile Interface Adapter
  6428. VM       - Virtual Memory
  6429. VRAM     - Video RAM
  6430. YANCC    - Yet Another NuBus Controller Chip
  6431.  
  6432. Sources
  6433. -------
  6434. A    Apple Computer, Inc.
  6435. AD    Documentation & Magazines
  6436. AD01   MacTCP Programmer's Guide
  6437. AD02   AppleTalk Remote Access API External Reference Specification
  6438. AD03   Macintosh Easy Open programmer's docs
  6439. AD04   Thread Manager 1.1 and 2.0 documentation
  6440. AD05   Drag Manager Programmer's Guide
  6441. AD06   Sound Manager Tech Note on BookMark CD 16
  6442. AD07   D e v e l o p 17, p. 123
  6443. AD08   MAE Compatibility Hints
  6444. AD09   Color Matching documentation on ETO 14 and BookMark 18
  6445. AD10   OS Compatibility doc on WWDC 1994 CD
  6446. AD11   IM PPC System Software
  6447. AD12   IM OS Utilities
  6448. AD13   D e v e l o p 19, p. 105
  6449. AD14   File System Manager Guide, Sep. 1994
  6450. AD15   Apple Remote Access API, part of Mac OS SDK
  6451. AD16   Apple Guide Authoring Kit
  6452. AD17   IM Advanced Color Imaging (Draft)
  6453. AD18   Apple Tech Info Library (http://www.info.apple.com/til.html)
  6454. AD19   Macintosh Programmer's Toolbox Assistant (Online Reference)
  6455. AD20   IM Sound
  6456. AD21   Preliminary Copland Headers (WWDC 1995)
  6457. AD22   Copland Technical Overview (Draft)
  6458. AD23   Developer Note Workgroup Server 9150
  6459. AD24   PCMCIA API Manual
  6460. AD25   Developer Note Macintosh PowerBook 190
  6461. AD26   Developer Note Macintosh PowerBook 5300 Computer
  6462. AD27   Developer Note Macintosh PowerBook 2300c
  6463. AD28   Developer Note Macintosh PowerBook Processor Card Upgrade Kit
  6464. AD29   IM Files Errata. February 1995/Rev. June 1995
  6465. AD30   D e v e l o p 24, p. ???
  6466. AD31   Macsbug 6.5 Release Notes
  6467. AD32   PowerTalk Manager 1.5 (Mailbox API) documentation
  6468.  
  6469. Inside Macintosh can be found at:
  6470. http://www.info.apple.com/dev/insidemac.html
  6471.  
  6472. Sample Code can be found at:
  6473. http://www.info.apple.com/dev/sc.html
  6474.  
  6475. D e v e l o p Magazine can be found at:
  6476. http://www.info.apple.com/dev/develop.html
  6477.  
  6478. AS    Source code & header files
  6479. AS01   QuickTime ImageCompression source files
  6480. AS02   CommToolbox 1.1 source files
  6481. AS03   MPW Interface files on Bookmark CD 14
  6482. AS04   GestaltEqu header file on ETO 12
  6483. AS05   GestaltEqu header file on ETO 13
  6484. AS06   GestaltEqu header file on BookMark CD 17
  6485. AS07   TSMTE header file on BookMark CD 17
  6486. AS08   AppleScript header file on ETO 14
  6487. AS09   Drag header file on ETO 14
  6488. AS10   XTNDInterface header file on ETO 14
  6489. AS11   ControlStrip header file on BookMark CD 19
  6490. AS12   AppleGuide header file on BookMark CD 18
  6491. AS13   Macintosh on RISC SDK (also on CodeWarrior CD)
  6492. AS14   Gestalt header file as part of Universal Interfaces 2.0a1
  6493. AS15   GestaltEqu header file for ETO 16 (on CodeWarrior 5 CD)
  6494. AS16   PPCToolbox.p header file on CodeWarrior 5 CD
  6495. AS17   Several header files on ETO 16
  6496. AS18   Open Transport Client Note on the Mac OS SDK #2 CD
  6497. AS19   Gestalt.h header file on WWDC Presentations 1995 CD
  6498. AS20   Gestalt.h header file on ETO 18
  6499. AS21   Gestalt.h header file on ETO 20
  6500. AS22   Gestalt.h header file of Universal Interfaces 3.0d3 on Copland DR1
  6501. AS23   FSpCompat.c file included with More Files 1.4.2?
  6502.  
  6503. AT    Technical Notes
  6504. AT01   TN M.OV.GestaltSysenvirons (OV 16), May 1987/Rev. Sep. 1995
  6505. AT02   TN M.NW.AppleTalk2 (NW 13), Feb.1992
  6506. AT03   TN M.DV.CD-ROMDriver (DV 22), May 1993
  6507. AT04   TN M.HW.SCSI.Q&As (HW 540), Oct. 1990
  6508. AT05   TN M.TX.TextServicesMgr.Q&As (TE 531), May 1993
  6509. AT06   TN OS 05 - System Update 3.0, July 1993/Rev. May 1994
  6510. AT07   TN M.DV.CuriousSCSI, May 1994
  6511. AT08   TN OS 06 - Control Strip Modules, July 1994/Rev. Sep. 1994
  6512. AT09   TN M.ME.VMMemoryMapping (TN-Memory), July 1987/Rev. March 1988
  6513. AT10   TN M.PT.A/UX.Q&As, Oct. 1990/Rev. Sep. 1993 
  6514. AT11   TN M.QD.ColorQD Q&As, April 1990
  6515. AT12   TN OS 07 - System 7.5 Update 1.0, February 1995
  6516. AT13   TN 1017 System 7.5 Update 2.0 / System 7.5.3 Update
  6517. AT14   Unreviewed Technote: On Drag Manager Additions
  6518. AT15   Technote 1045: On Changes to QuickTime Conferencing...
  6519.  
  6520. The Technical Notes can be found at:
  6521. http://www.info.apple.com/dev/technotes/Main.html
  6522.  
  6523. S    Symantec Corp.
  6524. S01    THINK Pascal 4.0 interface files
  6525. S02    THINK C GestaltGlue source files
  6526. S03    THINK Reference 1.0 and 2.0
  6527.  
  6528. M    Miscellaneous sources
  6529. M01    Gestalt DA 0.4 1990 (Carl C.Hewitt)
  6530. M02    Gestalt dcmd 1.0 (Eric Simenel, Apple Computer France)
  6531. M03    sysvINIT source files (Apple Computer Japan, Inc.)
  6532. M04    TMON Professional Reference Manual, p.192 (ICOM Simulations)
  6533. M05    AfterDarkGestalt.h file (Berkeley Systems, Inc.)
  6534. M06    SoftwareFPU Programmer Info (John Neil & Associates)
  6535. M07    GestaltZeigen (Kevin B. Hardman)
  6536. M08    Source code of ShowInitAndName (Storm Impact, Inc.)
  6537.  
  6538. Definitions and Formats
  6539. =======================
  6540. This chapter explains where the word 'Gestalt' comes from, a few things
  6541. are defined and it explains how each selector code entry looks like.
  6542.  
  6543. Use in Language
  6544. ---------------
  6545.  
  6546. **WEBSTER'S DICTIONARY**
  6547. ge.stalt \g<e>-'s(h)t<a:>lt, -'s(h)t<o.>lt\ n, pl ge.stalt.en
  6548. \-<\e>n\ or gestalts (1922)
  6549.   [G, lit., shape, form]
  6550.   :a structure, configuration, or pattern of physical, biological, or
  6551.   psychological phenomena so integrated as to constitute a functional unit
  6552.   with properties not derivable by summation of its parts.
  6553.  
  6554.   (Try this one: http://www.fwi.uva.nl/htbin/webster.cgi?gestalt)
  6555.  
  6556. **GERMAN-DUTCH DICTIONARY**
  6557. Gestalt w [-en]
  6558.   stature, figure, form; Ritter von der Traurigen -, knight of the
  6559.   sorrowful figure.
  6560.  
  6561. Definitions
  6562. -----------
  6563.  
  6564. **APPLE SOFTWARE**
  6565. This category includes all selectors installed by software published by
  6566. Apple Computer, Inc.
  6567. Inside Macintosh says this about them:
  6568.      "Apple reserves for its own use all four-character sequences
  6569.       consisting solely of lowercase letters and non alphabetic ASCII
  6570.       characters".
  6571. It includes all selectors of the next two categories:
  6572.  
  6573. **APPLE SYSTEM SOFTWARE**
  6574. This category includes all selectors installed by System Software from
  6575. Apple Computer, Inc.
  6576.  
  6577. **APPLE ADDITIONAL SOFTWARE**
  6578. These are selectors installed by additional, non-system, software from
  6579. Apple Computer, Inc.
  6580.  
  6581. **THIRD PARTIES SOFTWARE**
  6582. These are selectors installed by software from parties other than Apple
  6583. Computer, Inc.
  6584. Inside Macintosh says about these:
  6585.      "If you have registered a creator string with Apple, you are
  6586.       strongly encouraged to use that sequence as your selector code".
  6587. This type of selectors is included in this list with the motto "If you
  6588. don't know they are there, you can't do anything with them".
  6589. Especially the Third Party selectors may change with every new release and
  6590. are therefore only listed in the 'known selectors' part when the author has
  6591. described the structure in the documentation or by email to me. These
  6592. selectors don't have a high priority but when possible I want to know at
  6593. least which software installs it to exclude it as a possible
  6594. "Apple selector".
  6595.  
  6596. Format Selector Entry
  6597. ---------------------
  6598. Format used to display information about each selector:
  6599.  
  6600. selector_code (Software_name & type [since_version], by company/author)
  6601.      constant_name (selector code in hex)
  6602.      description
  6603.  
  6604.      enum {
  6605.      #define selectorconstant 'selector_code'
  6606.      constant_1 = value_1,  /* remark &ref.number_to_source */
  6607.      constant_n = value_n}; /* remark &ref.number_to_source */
  6608.  
  6609.      NOTE and/or WARNING:
  6610.  
  6611. Where the type is one of:
  6612. app  application (APPL)
  6613. cp   control panel (cdev)
  6614. enbl enabler
  6615. ext  extension (INIT/appe/RDEV etc.)
  6616.  
  6617. Example:
  6618.  
  6619. COLA (Sugarwater ext [1.0] part of Knowledge Navigator [1.0]
  6620.                            by John Sculley)
  6621.      gestaltSugarwaterVersion
  6622.      Returns version of Sugarwater as NumVersion.
  6623.  
  6624.      enum {
  6625.      #define gestaltSugarwaterVersion 'COLA' /* &AB01 */
  6626.      gestaltSugarwaterLightVersion = 0x0200}; /* first light version */
  6627.  
  6628.      WARNING: This example is fictitious.
  6629.  
  6630.      NOTE:
  6631.      Sugarwater? See the book 'West of Eden, The End of Innocence at
  6632.      Apple' by Frank Rose.
  6633.  
  6634. Most selectors are listed as four characters, if there are only two or
  6635. three characters displayed the remainder are spaces (or it's a typo!).
  6636. Diacritical characters are shown in the most logical normal character and
  6637. at the end of the entry a note is included about which key-combination to
  6638. press with a normal International system and US keyboard layout to get the
  6639. required diacritical character and also listed is its hexadecimal code.
  6640. When 'INF' is at the end of the first line it means it is an informational
  6641. selector, all others are environmental selectors.
  6642. The source reference number may also be used in other places than indicated
  6643. above. It then applies to other parts of the entry or to the whole entry.
  6644. A single question mark indicates an uncertainty regarding the information
  6645. in front of the question mark. Three question marks indicate complete
  6646. absence of the information.
  6647. Some symbolic names may not originate from official publications.
  6648.  
  6649. Symbolic Names Suffixes
  6650. -----------------------
  6651. The last characters of the symbolic names form a suffix which indicates
  6652. the type of the returned value. Below is a table which lists the different
  6653. types of suffix and their meaning.
  6654.  
  6655. ===========================================================================
  6656. Symbolic Names Suffixes
  6657. ===========================================================================
  6658. Suffix                   Meaning
  6659. ---------------------------------------------------------------------------
  6660. Addr                     Value is an address, i.e. to the base address of
  6661.                          a memory-mapped device or to a function in
  6662.                          memory.
  6663. Attr                     Value is a range of 32 bits (0 is the least
  6664.                          significant bit), must compare with list of
  6665.                          constants and use BitTst or similair. Sometimes
  6666.                          it is a bitmask, then use BitAnd.
  6667. Code                     Value is four ASCII characters representing a
  6668.                          four byte string (no length byte or zero-
  6669.                          terminated).
  6670. Count                    Value is a number indicating how many of the
  6671.                          indicated type exist.
  6672. Features                 Same as 'Attr' suffix. Usually used by mistake
  6673.                          instead of the more common 'Attr' suffix.
  6674. Grade                    Grade is a value which marks a threshold for
  6675.                          other software to do certain actions. The unit
  6676.                          is undefined.
  6677. Icon                     Value is the resource ID of an icon (in the
  6678.                          system file).
  6679. Size                     Value is a size, usually in bytes.
  6680. Table                    Value is the base address of a table.
  6681. Type                     Value is an index to map to a version or name.
  6682. Version                  Value is a version number. See the section
  6683.                          'Format Version Numbers' below, for a list of
  6684.                          different formats of version numbers.
  6685. <none>                   If there is no suffix like the ones above, the
  6686.                          presence of the selector only implies the
  6687.                          software which installed the selector is present.
  6688.                          The returned value is then private to the
  6689.                          installee.
  6690. ---------------------------------------------------------------------------
  6691.  
  6692. Format Version Numbers
  6693. ----------------------
  6694. **BCD (Binary Coded Decimal)**
  6695.      0x0402 means 4.0.2. Usually the lower two bytes of the response.
  6696.  
  6697. **INTEGER**
  6698.      The decimal representation of the returned value in the low-byte is
  6699.      the version.
  6700.  
  6701. **Double BCD** (my own fantasy name..., RR)
  6702.      0x00010108 means 1.1.8.
  6703.  
  6704. **NumVersion**
  6705.      The format of the LongInt response can be coerced into type NumVersion,
  6706.      which is the same format as used for the 'vers' resource type.
  6707.  
  6708.      type
  6709.       NumVersion = packed record
  6710.        case INTEGER of
  6711.         0: (majorRev: SignedByte;  {1st part of version number in BCD}
  6712.             minorRev: 0..9;        {2nd part is 1 nibble in BCD}
  6713.             bugFixRev: 0..9;       {3rd part is 1 nibble in BCD}
  6714.             stage: SignedByte;     {stage code: dev, alpha, beta, final}
  6715.             nonRelRev: SignedByte);{revision level of non-released version}
  6716.         1: (version: LONGINT);     {to use all 4 fields at one time}
  6717.        end;
  6718.  
  6719.      stage is one of: 0x20 = development
  6720.                       0x40 = alpha
  6721.                       0x60 = beta
  6722.                       0x80 = final
  6723.  
  6724. About this list
  6725. ===============
  6726. The Gestalt Manager is a collection of system routines which allows
  6727. applications to test for the availability of software and hardware. Because
  6728. of the increasing number of different software and hardware configurations,
  6729. this is getting an important issue. It probably already is and known by the
  6730. term 'compatibility'.
  6731. The Gestalt function allows applications to obtain information about the
  6732. current configuration. Selectors are used to refer to certain information.
  6733. A selector is of type OSType (a four byte value) and usually contain four
  6734. ASCII characters. For example: the selector 'sysv' causes the version of
  6735. the current system is returned. Other functions, NewGestalt and
  6736. ReplaceGestalt, allow programmers to install their own Gestalt selectors.
  6737. Programmers need to know these selectors beforehand to be able to request
  6738. and interpret the value returned by the Gestalt function.
  6739. See for more detailed information on how to use the Gestalt Manager
  6740. routines Inside Macintosh part VI (old series) or the new Inside
  6741. Macintosh: Operating System Utilities book.
  6742. The Driver Gestalt calls (status calls to device drivers) are not covered
  6743. by this list.
  6744.  
  6745. This Gestalt Selectors List intends to list all known selectors, but in
  6746. reality this means it lists all selectors known to the editor.
  6747. I would like to see this list to be a combined effort by different persons
  6748. who have together access to a wide area of information.
  6749. This list may contain (educated?) guesses and perhaps even false
  6750. information, so no guarantee is made about the contents.
  6751. You may use this information freely (see Legal Stuff section below), but
  6752. when you find information not included with this list; please tell me. If
  6753. you have additions, corrections, comments, suggestions, news about
  6754. available software, etc., mail it me. Please, also mention the source you
  6755. used, if any.
  6756. You can send contributions, remarks, etc. (using the form included below)
  6757. to this email address:
  6758.     rgaros@bio.vu.nl
  6759. If you want to remain anonymous, please mention this and it will be taken
  6760. care of.
  6761.  
  6762. Availability
  6763. ------------
  6764. If you downloaded this list from CompuServe, a BBS, or any other service,
  6765. you will notice some strange things like 'FTP-sites' which have to do with
  6766. the fact that this list originates from the Internet.
  6767. Although the GSL can be found on most networks outside the Internet, you
  6768. may be able to access the Internet also from AppleLink, AOL and CompuServe.
  6769. Contact your network provider for information on how to access the
  6770. Internet or how to send email to an Internet address.
  6771.  
  6772. This list is available in the following ways:
  6773.  
  6774. **INTERNET**
  6775.  
  6776. _FINGER_
  6777. Using Finger to obtain the latest version is no longer possible.
  6778.  
  6779. _FTP-SITES_
  6780.  
  6781. INFO-MAC ARCHIVES
  6782. Every minor and major version is submitted to the Info-Mac archives:
  6783.  
  6784. ftp://sumex-aim.stanford.edu/info-mac/dev/info/gestalt-selectors-*.hqx
  6785.  
  6786. It is also available on its mirror sites. A list of the mirror sites can
  6787. be found at:
  6788.  
  6789. http://www.bio.vu.nl/home/rgaros/mirror-list.html
  6790.  
  6791. Contact: Info-Mac Moderator (info-mac-request@sumex-aim.stanford.edu)
  6792.  
  6793.  
  6794. _USENET_
  6795. This list is too large to post to any of the subgroups of the
  6796. comp.sys.mac.programmer (c.s.m.p.) newsgroups. Therefore, since version 2.2,
  6797. only an announcement about the release of a new version is posted to these
  6798. newsgroups:
  6799.     news:comp.sys.mac.programmer.codewarrior
  6800.     news:comp.sys.mac.programmer.help
  6801.     news:comp.sys.mac.programmer.info
  6802.     news:comp.sys.mac.programmer.misc
  6803.     news:comp.sys.mac.programmer.tools
  6804.  
  6805. _WWW_
  6806.  
  6807. APPLE COMPUTER INC., U.S.A.
  6808. The GSL can be found on the Apple WWW server in
  6809.  
  6810. http://www.info.apple.com/cgi-bin/lister-pl?Apple.Support.Area/Developer_Services/Tool_Chest/OS_Utilities/Gestalt_Selectors_List/
  6811.  
  6812. Which is mirrored on the FTP site of Apple Europe at
  6813.  
  6814. ftp://ftp.info.euro.apple.com/Apple.Support.Area/Developer_Services/Tool_Chest/OS_Utilities/
  6815.  
  6816. Contact: webmaster@info.apple.com
  6817.  
  6818. NORTHWESTERN UNIVERSITY, U.S.A.
  6819. The GSL can be found at the Northwestern University WWW server, together
  6820. with other Macintosh FAQs:
  6821.  
  6822. http://www.astro.nwu.edu/lentz/mac/faqs/source/gestalt.html
  6823.  
  6824. Contact: Robert Lentz (lentz@annie.astro.nwu.edu)
  6825.  
  6826. VRIJE UNIVERSITEIT, NL
  6827. The GSL can be found behind the home page of the editor at the Vrije
  6828. Universiteit's Faculty of Biology WWW server:
  6829.  
  6830. http://www.bio.vu.nl/home/rgaros/
  6831.  
  6832. or direct at:
  6833.  
  6834. http://www.bio.vu.nl/home/rgaros/gestalt/
  6835.  
  6836. Contact: Rene G.A. Ros (rgaros@bio.vu.nl)
  6837.  
  6838. **AMERICA ONLINE (AOL)**
  6839.  
  6840. You can find the GSL on AOL in the "MDV/Documents and Proposals" directory.
  6841.  
  6842. Contact: none, who wants to upload it to AOL?
  6843.  
  6844. **APPLELINK**
  6845.  
  6846. You can find the GSL on AppleLink in this location:
  6847.  
  6848. Developer Support:Developer Services:Tool Chest:OS/Toolbox:
  6849.  
  6850. **COMPUSERVE**
  6851.  
  6852. Since version 2.0 this list is uploaded to the Macintosh Developers Forum
  6853. (MACDEV). Only new minor and major versions will be uploaded once. The GSL
  6854. is available in the Tools/Debuggers (13) section. Or use the Internet
  6855. locations by using GO INTERNET.
  6856.  
  6857. **GENERAL**
  6858.  
  6859. _CD-ROM_or_BBS_
  6860. Because of permissions I granted you may get this list from a CD-ROM or via
  6861. a BBS from Internet (or any other network) or a CD-ROM. If you do, and the
  6862. release was more than two months ago, there is probably already a newer
  6863. version.
  6864. You can find the GSL on the latest release or upcoming release of these
  6865. CD-ROM titles:
  6866.  
  6867. Apprentice CD-ROM                    (Celestin Company)
  6868. BBS in a BOX CD-ROM                  (Arizona Macintosh Users Group)
  6869. Bookmark CD                          (Apple Computer, Inc.)
  6870. CodeWarrior CD                       (MetroWerks Corporation)
  6871. Developer CD Series, Tool Chest      (Apple Computer, Inc.)
  6872. Info-Mac CD-ROM                      (Pacific HiTech, Inc.)
  6873. MacHack CD                           (MacTech Magazine)
  6874. The Right Stuffed CD-ROM             (Quantum Leap Technologies, Inc.)
  6875.  
  6876. _MAILING_LIST_
  6877. Every person on the mailing list automatically receives an update by email
  6878. whenever there are some changes. If you want to subscribe or unsubscribe to
  6879. this mailing list you need to send email to this address:
  6880.      gestalt-selectors-list-request@bio.vu.nl
  6881. Then put in the subject line either 'subscribe' or 'unsubscribe'.
  6882.  
  6883. The mailing list is moderated, which means everybody can email to:
  6884.     gestalt-selectors-list@bio.vu.nl
  6885. But only after approval of the moderator the other subscribers will receive
  6886. your posting. This guarantees that no confidential contribution is
  6887. distributed before the moderator sees it.
  6888. If mail to you bounces eight times you're automatically unsubscribed.
  6889.  
  6890. This service is only possible to those who have an account on Internet or
  6891. any other network reachable from the Internet (AOL, AppleLink, CompuServe,
  6892. Fidonet, etc.). I can not provide mailing of printed versions or on disk by
  6893. normal surface mail.
  6894.  
  6895. _MAIL_ARCHIVE_SERVER_
  6896. You can retrieve the latest versions of this list and other software
  6897. by sending email to this address:
  6898.      gestalt-selectors-list-request@bio.vu.nl
  6899. In the subject line you need to enter 'archive' and then put one command
  6900. behind it or only 'archive' in the subject line with one or more commands
  6901. in the body of your email preceded by the keyword 'archive'. These commands
  6902. can be:
  6903.      help             to get some help on using the archive server
  6904.      ls <dir>         to list the contents of the specified directory
  6905.      get <dir>/<file> to have the specified file sent to you by email.
  6906.  
  6907. Your actions may be logged.
  6908.  
  6909. _PRINTED_
  6910. If you want this list printed on paper you may want to try a feature
  6911. included with the LaserWriter 8 software. With it you can print four
  6912. pages on a single sheet of paper. When you set the page breaks correct,
  6913. this produces a very neat, little booklet.
  6914.  
  6915. Gestalt Submission Form
  6916. -----------------------
  6917. You can use this form to report information you found on already included
  6918. selectors. But you can also use it to register new Gestalt selector codes.
  6919. If you want to register the selector code your software installs, make sure
  6920. you registered your code first with Apple Computer, Inc. Also, it is your
  6921. good right if you chose to keep the meaning of the response value private.
  6922. If so, still register so that others can at least detect your software by
  6923. determining if the selector is present.
  6924.  
  6925. Software means, in this form, the software which installs the selector
  6926. code. Not the whole package, just the extension or control panel (perhaps
  6927. application) itself.
  6928. The package is the product name in which the software is included and
  6929. distributed.
  6930. If data is not available or relevant, leave it blank. When the selector
  6931. contains non-ASCII characters, please also provide the hexadecimal value.
  6932.  
  6933. You can also fill in this form on-line because it is also on the WWW
  6934. pages of the GSL: http://www.bio.vu.nl/home/rgaros/gestalt/
  6935.  
  6936.  
  6937. Your name: 
  6938.  
  6939. Your email address: 
  6940.  
  6941. Your company name: 
  6942.  
  6943. Do you want to remain anonymous? Yes / No
  6944.  
  6945. Software name: 
  6946.  
  6947. Software type: O application 
  6948.                O control panel
  6949.                O extension (also 'appe')
  6950.                O other:
  6951.  
  6952. Category:      O Apple System Software
  6953.                O Apple Additional Software
  6954.                O Apple Software
  6955.                O Third Parties Software
  6956.  
  6957. Package name: 
  6958.  
  6959. Author or Company name: 
  6960.  
  6961. Gestalt Selector: 
  6962.  
  6963. Constant name: 
  6964.  
  6965. First version to install selector: 
  6966.  
  6967. Source of information: 
  6968.  
  6969. Short description of the returned response:
  6970.  
  6971.  
  6972.  
  6973.  
  6974.  
  6975. Additional constant names and values for the response value meaning:
  6976.  
  6977.  
  6978.  
  6979.  
  6980.  
  6981. Please email this form to this Internet address: rgaros@bio.vu.nl
  6982.  
  6983. Acknowledgements
  6984. ----------------
  6985. I want to thank the following persons for their contributions and
  6986. support of this list:
  6987.  
  6988. ===========================================================================
  6989. Name                                       Internet Email Address
  6990. ---------------------------------------------------------------------------
  6991. Anonymous contributor(s)                   anonymous@secret.bvd.nl
  6992. Anonymous contributor 'Fig'                an274807@anon.penet.fi
  6993. Lonnie R. Abelbeck                         abelbeck@dev.abelbeck.com
  6994. Dave Axler                                 CJ DaveAx@aol.com
  6995. Daniel Azuma                               dazuma@cco.caltech.edu
  6996. J.D. Sterling Babcock                      jdsb@ee.duke.edu
  6997. Jeff Baudin, Micromat Computer Systems     micromat@nbn.com
  6998. John W. Baxter                             jwbaxter@pt.olympus.net
  6999. Gilles Berkovitch                          gberkovi@imaginet.fr
  7000. Martin Bestmann                     kruemel@theorie3.physik.uni-erlangen.de
  7001. Etienne Bido                               bido@xs4all.nl
  7002. Mason L. Bliss                             mason@cis.umassd.edu
  7003. Scott Bronson                              urge@mcl.mcl.ucsb.edu
  7004. Jim Browne                                 jbrowne@jbrowne.com
  7005. Richard Buckle                             richardb@cocytus.demon.co.uk
  7006. Ivan M Cavero Belaunde                     ivanski@world.std.com
  7007. Colen Garoutte-Carson                      colen@teleport.com
  7008. John Champion                              denali@metronet.com
  7009. Mike Cohen                                 isis@netcom.com
  7010. Marc Cooperman                             coopem@panix.com
  7011. Paul Cunningham, Teknosys, Inc.            Teknosys@aol.com
  7012. Jean-Pierre Curcio                         JPC83@calvacom.fr
  7013. Mark Dawson                                marc@apple.com
  7014. Anthony DeRobertis                         derobert@clark.net
  7015. Lawrence D'Oliveiro                        ldo@waikato.ac.nz
  7016. Alex Dosher (Developer CD Leader), Apple Computer, Inc.
  7017.                                            alyx@apple.com
  7018. Avi Drissman                               ad406@detroit.freenet.org
  7019. Dave Falkenburg, Apple Computer Inc.       falken@apple.com
  7020. Jeff Fischer, The Fischer Group            tfg@primenet.com
  7021. Andy Fyfe                                  andy@bandr.vip.best.com
  7022. Rick Gansler                               gansler@boardwalk.tiac.net
  7023. Jason Goldman, CircleDream Software        Jay_Goldman@mail.magic.ca
  7024. Pete Gontier                               gurgle@apple.com
  7025. M. David Greenspon                         gremicf@yalevm.ycc.yale.edu
  7026. C.K. Haun                                  haun@apple.com
  7027. Michael Hecht                              Michael_Hecht@mac.sas.com
  7028. Robert Hess (MacWEEK editor, died on 12 January 1996)
  7029. Bill Hofmann                               wdh@fresh.com
  7030. Jeff Holcomb, Apple Computer Inc.          jeffh@apple.com
  7031. Laurent Humbert                            lhumbert@sw15.com
  7032. Eric Hustvedt                              hustvedt@mojorisin.ultranet.com
  7033. Don Johnson, Apple Computer Inc.           (??? via devsupport)
  7034. Mark B. Johnson                            mjohnson@apple.com
  7035. Mitch Jones                                mjones@earthlink.net
  7036. Michael F. Kamprath                        kamprat@leonardo.net
  7037. John Kawakami, MacTech Magazine            online@xplain.com
  7038. Jonathan Kleid                             jonjk@leland.stanford.edu
  7039. Kenneth Knotts, Power Computing            knottsk@PowerCC.com
  7040. Peter Kocourek                             petr@duttnxc.tn.tudelft.nl
  7041. Steve Ko                                   sko@apple.com
  7042. Rich Kubota, Apple Computer Inc.           Rich_Kubota@quickmail.apple.com
  7043. Roy Leban, Akimbo Systems                  RoyLeban@akimbo.com
  7044. David B. Lamkins                           dblamkins@aol.com
  7045. Robert Lentz                               lentz@annie.astro.nwu.edu
  7046. David Lewis                                lewis@netcom.com
  7047. Nevin ":-)" Liber                          nevin@CS.Arizona.EDU
  7048. Spencer Low                                spencerl@crl.com
  7049. Jim Luther                                 jumplong@aol.com
  7050. John Mancino, Decision Maker's Software    mancino@decismkr.com
  7051. Roland Mansson                             roland.mansson@ldc.lu.se
  7052. Andreas Magnusson                      Andreas.Magnusson@mailbox.swipnet.se
  7053. Matsubayashi Kohji                         matubays@ics.es.osaka-u.ac.jp
  7054. William H. Leininger                       whl@popmail.mcs.net
  7055. Duane Murphy, Novell Inc.                  damurphy@wc.novell.com
  7056. Masatsugu Nagata                           nagata@kurims.kyoto-u.ac.jp
  7057. Fabrizio Oddone                            oddone@di.unito.it
  7058. Carl R. Osterwald                          cro@br213mail.nrel.gov
  7059. Marco Piovanelli                           piovanel@ghost.dsi.unimi.it
  7060. Kees Pols                                  kpols@bio.vu.nl
  7061. Francois Pottier                           pottier@clipper.ens.fr
  7062. Ken Prehoda                                kenp@nmrfam.wisc.edu
  7063. Jon Pugh                                   jonpugh@netcom.com
  7064. Quinn "The Eskimo!"                        quinn@quinn.echidna.id.au
  7065. Dave Radcliffe, Apple Computer Inc.        radcliff@apple.com
  7066. Eric-Paul Rebel                            eprebel@knoware.nl
  7067. Thomas Reed                                reed@telesphere.wustl.edu
  7068. Pete Resnick                               resnick@cogsci.uiuc.edu
  7069. Paul Reznick                               PRzeznik@aol.com
  7070. Alex Rosenberg, Apple Computer Inc.        alexr@apple.com
  7071. Leonard Rosenthol                          leonardr@aladdinsys.com
  7072. Jeremy Roussak                             jeremyr@dcs.qmw.ac.uk
  7073. Ray Sanders                                72511.232@CompuServe.COM
  7074. Eric Schlegel, Microsoft Corporation       ericsc@microsoft.com
  7075. Marc Schrier                               schrier@garnet.berkeley.edu
  7076. Mark Simmons                               72511.256@CompuServe.COM
  7077. Mark Sproul                                sproul@eos.ap.org
  7078. Patrick Stadelmann                    Patrick.Stadelmann@etudiants.unine.ch
  7079. Brian Stern                                Jaeger@fquest.com
  7080. Zalman Stern                               zalman@adobe.com
  7081. Tim Swihart                                tim_swihart@quickmail.apple.com
  7082. Ilan Szekely                               ILANS@ds.huji.ac.il
  7083. Victor Tan                                 victort@extro.ucc.su.oz.au
  7084. Nobu Toge                                  ntoge@netcom.com
  7085. Rodrigo Torres, Berkeley Systems           brklysystm@aol.com
  7086. John Tsombakos                             johnts@zipnet.net
  7087. Hans Verbrugge                             hans@hannibal.NL.net
  7088. Maurice Volaski, Flux Software             support@fluxsoft.com
  7089. Dave Wallace                               waggawagga@i-link.net
  7090. John Watte                                 h+@metrowerks.com
  7091. Jos van Wezel                              wezel@bio.vu.nl
  7092. Jonathan Wilson                            toast@diss.hyphen.com
  7093. Terence Worley, Microsoft Corporation      terrywo@microsoft.com
  7094. Chris Wysocki                              wysocki@netcom.com
  7095. ---------------------------------------------------------------------------
  7096.  
  7097. And the members of the Computer Department of the Biology Faculty at the
  7098. Vrije Universiteit in Amsterdam, The Netherlands for their help and support.
  7099. Also special thanks to Marco Piovanelli for his support and comments about
  7100. preliminary versions and updates.
  7101.  
  7102. The persons mentioned above provided information used in this list. They
  7103. did this on personal title, NOT on behalf of their employer, unless
  7104. explicitly stated otherwise.
  7105. I assume information you mail to me about Gestalt selectors may be used in
  7106. this list. Information made available to the general public (e.g. a posting
  7107. to a USENET newsgroup) is also included and the persons name added to this
  7108. section.
  7109. I will mail you back to thank you and include the parts from the list which
  7110. were changed, according to the information you provided, to let you check
  7111. it.
  7112.  
  7113. Legal Stuff
  7114. -----------
  7115. (C) 1992-1996, Rene G.A. Ros
  7116.  
  7117. **NOTICE OF LIABILITY**
  7118. The information in this list is distributed on an "AS IS" basis, without
  7119. warranty. While every precaution has been taken in the preparation of this
  7120. list, neither the editor nor any contributor nor any publisher, providing
  7121. this list on any type of media, shall have any liability to any person or
  7122. entity with respect to any liability, loss, or damage caused or alleged to
  7123. be caused directly or indirectly by the information contained in this list
  7124. or by the computer software and hardware products described herein.
  7125. In addition it should be noted explicitly this list is NOT a product of
  7126. Apple Computer Inc., like any other publisher, NOR are they responsible for
  7127. any problems you may encounter in its use.
  7128.  
  7129. **TRADEMARKS**
  7130. Throughout this list trademarked names are used. Rather than put a
  7131. trademark symbol in every occurrence of a trademarked name, I state I am
  7132. using the names only in an editorial fashion and to the benefit of the
  7133. trademark owner with no intention of infringement of the trademark.
  7134.  
  7135. **USE***
  7136. The information in this list may be used freely, but the list is NOT
  7137. public domain.
  7138. When you use the information in this list for COMMERCIAL purposes, you may
  7139. consider sending the editor a donation to help pay in the costs.
  7140.  
  7141. It is not allowed to use excerpts of this list with your documentation, or
  7142. in any other way, without giving proper credit by using this line:
  7143.  
  7144. "This documentation lists information provided by the Gestalt Selectors
  7145. List, edited and maintained by Rene G.A. Ros (Internet: rgaros@bio.vu.nl)
  7146. On the World Wide Web go to http://www.bio.vu.nl/home/rgaros/gestalt/"
  7147.  
  7148. If you use excerpts you are advised to subscribe to the mailing list to be
  7149. notified about errors and the latest news.
  7150. Or, when your software makes extensive use of the information provided by
  7151. this list, please use this line in your documentation:
  7152.  
  7153. "This software uses information provided by the Gestalt Selectors List,
  7154. edited and maintained by Rene G.A. Ros (Internet: rgaros@bio.vu.nl)
  7155. On the World Wide Web go to http://www.bio.vu.nl/home/rgaros/gestalt/"
  7156.  
  7157. Please also mention this list in the About window of your software, if
  7158. possible.
  7159.  
  7160. **DISTRIBUTION**
  7161. The GSL may not be distributed outside any computer network on media of
  7162. which the capacity exceeds 2 Megabytes or in print unless you have
  7163. contacted the editor, prior to publication, and received permission to do
  7164. so. This is mainly to ensure you have the latest version. The updates may
  7165. not be distributed separated but only bundled with the full GSL version.
  7166. The updates are initially ONLY for the persons on the mailing list.
  7167.  
  7168. Permission for distribution of the full list is granted to:
  7169. Aladdin Systems                      (InstallerMaker software)
  7170. Apple Computer, Inc.                 (Developer CD Series, Bookmark CD)
  7171. Arizona Macintosh Users Group        (BBS in a BOX CD-ROM)
  7172. Celestin Company                     (Apprentice CD-ROM, CD-ROM companion
  7173.                                       to TRICKS OF THE MAC GAME PROGRAMMING
  7174.                                       GURUS book)
  7175. Club Macintosh de Quebec
  7176. CP Shareware
  7177. Pacific HiTech, Inc.                 (Info-Mac CD-ROM, Umich CD-ROM)
  7178. Quantum Leap Technologies, Inc.      (The Right Stuffed CD-ROM)
  7179. Stichting Klokhuis                   (Klokhuis CD)
  7180.  
  7181. Distribution of modified versions of this list, including, but not limited
  7182. to, deleting, adding or moving text or adding non-text parts, is not
  7183. allowed. Distribution in any electronical format except a normal (or
  7184. compressed) text file is not allowed without permission.
  7185. You are not allowed to redistribute the GSL with any other name than
  7186. 'gestalt-selectors-XX.YYY'  or 'Gestalt Selectors List X.X' for a plain
  7187. text file format (where XX and X.X is the version number and YYY the suffix
  7188. to indicate compression etc.), unless because of technical reasons. In such
  7189. case a name should be chosen which resambles it as closely as possible to
  7190. avoid possible confusion.
  7191.  
  7192. Editor's Address
  7193. ----------------
  7194. Rene G.A. Ros
  7195. developer at Mac Support Automation B.V., Uitgeest, The Netherlands
  7196. consultant to the Computer Department,
  7197.     Biology Faculty, Vrije Universiteit Amsterdam, The Netherlands
  7198. contract programmer Pascal and C, also 4th Dimension and other data-bases
  7199.  
  7200. D.C. van Krimpenstraat 3
  7201. 1067 SG  Amsterdam-Geuzenveld
  7202. The Netherlands, Europe
  7203.  
  7204. Email: rgaros@bio.vu.nl (preferred)
  7205.        rgaros@dds.nl
  7206.        ros@macsupport.nl
  7207.        100112.1363@compuserve.com
  7208.